 |
Open Broadcaster Software
Free, open source software for live streaming and recording
|
Go to the documentation of this file.
20 #include "../util/threading.h"
21 #include "../util/darray.h"
27 const char *(*device_get_name)(void);
32 const char *(*device_preprocessor_name)(void);
37 void *(*device_get_device_obj)(
gs_device_t *device);
46 gs_device_t *device, uint32_t width, uint32_t height,
48 const uint8_t **data, uint32_t flags);
52 const uint8_t **data, uint32_t flags);
54 gs_device_t *device, uint32_t width, uint32_t height,
56 uint32_t levels,
const uint8_t *
const *data, uint32_t flags);
61 gs_device_t *device, uint32_t width, uint32_t height,
114 uint32_t src_x, uint32_t src_y,
115 uint32_t src_w, uint32_t src_h);
121 uint32_t start_vert, uint32_t num_verts);
126 const struct vec4 *color,
float depth,
138 bool blue,
bool alpha);
158 int width,
int height);
164 float top,
float bottom,
float znear,
float zfar);
166 float top,
float bottom,
float znear,
234 uint64_t *frequency);
266 const char *markername,
267 const float color[4]);
278 bool (*device_gdi_texture_available)(void);
279 bool (*device_shared_texture_available)(void);
281 bool (*device_get_duplicator_monitor_info)(
285 gs_duplicator_t *(*device_duplicator_create)(
gs_device_t *device,
287 void (*gs_duplicator_destroy)(gs_duplicator_t *duplicator);
289 bool (*gs_duplicator_update_frame)(gs_duplicator_t *duplicator);
290 gs_texture_t *(*gs_duplicator_get_texture)(gs_duplicator_t *duplicator);
301 uint32_t (*device_texture_get_shared_handle)(
gs_texture_t *tex);
302 int (*device_texture_acquire_sync)(
gs_texture_t *tex, uint64_t key,
304 int (*device_texture_release_sync)(
gs_texture_t *tex, uint64_t key);
305 bool (*device_texture_create_nv12)(
gs_device_t *device,
308 uint32_t width, uint32_t height,
314 void (*device_register_loss_callbacks)(
316 void (*device_unregister_loss_callbacks)(
gs_device_t *device,
volatile long ref
Definition: graphics-internal.h:356
struct gs_vertex_buffer gs_vertbuffer_t
Definition: graphics.h:269
enum gs_blend_type src_c
Definition: graphics-internal.h:323
uint32_t(* gs_stagesurface_get_width)(const gs_stagesurf_t *stagesurf)
Definition: graphics-internal.h:212
size_t cur_matrix
Definition: graphics-internal.h:337
uint32_t(* gs_voltexture_get_width)(const gs_texture_t *voltex)
Definition: graphics-internal.h:205
struct gs_stage_surface gs_stagesurf_t
Definition: graphics.h:267
struct gs_device gs_device_t
Definition: graphics.h:282
gs_zstencil_format
Definition: graphics.h:78
void(* device_flush)(gs_device_t *device)
Definition: graphics-internal.h:144
void(* gs_vertexbuffer_flush_direct)(gs_vertbuffer_t *vertbuffer, const struct gs_vb_data *data)
Definition: graphics-internal.h:226
void * module
Definition: graphics-internal.h:330
void(* device_ortho)(gs_device_t *device, float left, float right, float top, float bottom, float znear, float zfar)
Definition: graphics-internal.h:178
void(* device_begin_scene)(gs_device_t *device)
Definition: graphics-internal.h:134
void(* device_end_scene)(gs_device_t *device)
Definition: graphics-internal.h:137
void(* gs_shader_get_param_info)(const gs_sparam_t *param, struct gs_shader_param_info *info)
Definition: graphics-internal.h:259
bool(* gs_timer_range_begin)(gs_timer_range_t *range)
Definition: graphics-internal.h:246
struct gs_shader_param gs_sparam_t
Definition: graphics.h:277
gs_color_format
Definition: graphics.h:56
uint32_t(* device_get_height)(const gs_device_t *device)
Definition: graphics-internal.h:59
void(* device_projection_pop)(gs_device_t *device)
Definition: graphics-internal.h:184
void(* gs_indexbuffer_destroy)(gs_indexbuffer_t *indexbuffer)
Definition: graphics-internal.h:231
struct gs_timer_range gs_timer_range_t
Definition: graphics.h:274
void(* gs_voltexture_destroy)(gs_texture_t *voltex)
Definition: graphics-internal.h:204
void(* device_projection_push)(gs_device_t *device)
Definition: graphics-internal.h:183
gs_stencil_op_type
Definition: graphics.h:128
void(* device_enable_blending)(gs_device_t *device, bool enable)
Definition: graphics-internal.h:148
bool using_immediate
Definition: graphics-internal.h:344
Definition: graphics.h:484
void(* device_enable_depth_test)(gs_device_t *device, bool enable)
Definition: graphics-internal.h:149
void(* gs_vertexbuffer_destroy)(gs_vertbuffer_t *vertbuffer)
Definition: graphics-internal.h:224
void(* device_depth_function)(gs_device_t *device, enum gs_depth_test test)
Definition: graphics-internal.h:162
enum gs_blend_type src_a
Definition: graphics-internal.h:325
gs_index_type
Definition: graphics.h:86
struct gs_effect * cur_effect
Definition: graphics-internal.h:340
struct gs_timer gs_timer_t
Definition: graphics.h:273
struct matrix4 projection
Definition: graphics-internal.h:339
struct gs_shader gs_shader_t
Definition: graphics.h:276
bool(* gs_stagesurface_map)(gs_stagesurf_t *stagesurf, uint8_t **data, uint32_t *linesize)
Definition: graphics-internal.h:216
Definition: graphics.h:178
size_t num
Definition: graphics.h:192
gs_vertbuffer_t * sprite_buffer
Definition: graphics-internal.h:342
uint32_t(* device_get_width)(const gs_device_t *device)
Definition: graphics-internal.h:58
void(* gs_timer_destroy)(gs_timer_t *timer)
Definition: graphics-internal.h:241
void(* gs_timer_end)(gs_timer_t *timer)
Definition: graphics-internal.h:243
uint32_t(* gs_texture_get_width)(const gs_texture_t *tex)
Definition: graphics-internal.h:189
struct gs_index_buffer gs_indexbuffer_t
Definition: graphics.h:270
void(* device_resize)(gs_device_t *device, uint32_t x, uint32_t y)
Definition: graphics-internal.h:55
Definition: graphics-internal.h:26
void(* device_stage_texture)(gs_device_t *device, gs_stagesurf_t *dst, gs_texture_t *src)
Definition: graphics-internal.h:131
void(* device_enable_stencil_test)(gs_device_t *device, bool enable)
Definition: graphics-internal.h:150
void(* device_leave_context)(gs_device_t *device)
Definition: graphics-internal.h:51
bool enabled
Definition: graphics-internal.h:322
uint32_t * colors
Definition: graphics.h:196
void(* device_get_viewport)(const gs_device_t *device, struct gs_rect *rect)
Definition: graphics-internal.h:174
void(* device_load_swapchain)(gs_device_t *device, gs_swapchain_t *swaphchain)
Definition: graphics-internal.h:138
void(* device_present)(gs_device_t *device)
Definition: graphics-internal.h:143
struct gs_texture gs_texture_t
Definition: graphics.h:266
void(* gs_shader_set_matrix4)(gs_sparam_t *param, const struct matrix4 *val)
Definition: graphics-internal.h:266
uint32_t(* gs_voltexture_get_height)(const gs_texture_t *voltex)
Definition: graphics-internal.h:206
void(* device_load_vertexbuffer)(gs_device_t *device, gs_vertbuffer_t *vertbuffer)
Definition: graphics-internal.h:100
DARRAY(struct gs_rect) viewport_stack
void(* gs_vertexbuffer_flush)(gs_vertbuffer_t *vertbuffer)
Definition: graphics-internal.h:225
gs_stencil_side
Definition: graphics.h:122
void(* device_debug_marker_end)(gs_device_t *device)
Definition: graphics-internal.h:283
void(* gs_timer_range_destroy)(gs_timer_range_t *range)
Definition: graphics-internal.h:245
void(* gs_timer_begin)(gs_timer_t *timer)
Definition: graphics-internal.h:242
gs_draw_mode
Definition: graphics.h:48
Definition: graphics-internal.h:329
size_t(* gs_indexbuffer_get_num_indices)(const gs_indexbuffer_t *indexbuffer)
Definition: graphics-internal.h:236
bool(* gs_timer_get_data)(gs_timer_t *timer, uint64_t *ticks)
Definition: graphics-internal.h:244
Definition: graphics.h:306
void(* device_stencil_function)(gs_device_t *device, enum gs_stencil_side side, enum gs_depth_test test)
Definition: graphics-internal.h:164
void(* device_set_viewport)(gs_device_t *device, int x, int y, int width, int height)
Definition: graphics-internal.h:172
void(* device_debug_marker_begin)(gs_device_t *device, const char *markername, const float color[4])
Definition: graphics-internal.h:280
void(* device_clear)(gs_device_t *device, uint32_t clear_flags, const struct vec4 *color, float depth, uint8_t stencil)
Definition: graphics-internal.h:140
struct gs_sampler_state gs_samplerstate_t
Definition: graphics.h:271
void(* gs_samplerstate_destroy)(gs_samplerstate_t *samplerstate)
Definition: graphics-internal.h:222
gs_device_t * device
Definition: graphics-internal.h:331
void(* gs_shader_set_vec4)(gs_sparam_t *param, const struct vec4 *val)
Definition: graphics-internal.h:270
void(* device_enable_color)(gs_device_t *device, bool red, bool green, bool blue, bool alpha)
Definition: graphics-internal.h:152
bool(* gs_texture_is_rect)(const gs_texture_t *tex)
Definition: graphics-internal.h:196
void(* gs_shader_set_int)(gs_sparam_t *param, int val)
Definition: graphics-internal.h:263
enum gs_cull_mode(* device_get_cull_mode)(const gs_device_t *device)
Definition: graphics-internal.h:147
Definition: graphics.h:223
uint32_t(* gs_stagesurface_get_height)(const gs_stagesurf_t *stagesurf)
Definition: graphics-internal.h:213
void(* gs_cubetexture_destroy)(gs_texture_t *cubetex)
Definition: graphics-internal.h:199
void(* device_load_pixelshader)(gs_device_t *device, gs_shader_t *pixelshader)
Definition: graphics-internal.h:111
Definition: graphics-internal.h:321
void(* device_enable_stencil_write)(gs_device_t *device, bool enable)
Definition: graphics-internal.h:151
enum gs_blend_type dest_a
Definition: graphics-internal.h:326
void(* device_destroy)(gs_device_t *device)
Definition: graphics-internal.h:49
void(* device_load_vertexshader)(gs_device_t *device, gs_shader_t *vertshader)
Definition: graphics-internal.h:109
Definition: graphics.h:191
void(* device_stencil_op)(gs_device_t *device, enum gs_stencil_side side, enum gs_stencil_op_type fail, enum gs_stencil_op_type zfail, enum gs_stencil_op_type zpass)
Definition: graphics-internal.h:167
struct gs_effect * first_effect
Definition: graphics-internal.h:353
void(* device_load_indexbuffer)(gs_device_t *device, gs_indexbuffer_t *indexbuffer)
Definition: graphics-internal.h:102
void(* gs_shader_set_default)(gs_sparam_t *param)
Definition: graphics-internal.h:274
gs_vertbuffer_t * immediate_vertbuffer
Definition: graphics-internal.h:346
void(* gs_shader_set_matrix3)(gs_sparam_t *param, const struct matrix3 *val)
Definition: graphics-internal.h:264
enum gs_color_format(* gs_texture_get_color_format)(const gs_texture_t *tex)
Definition: graphics-internal.h:191
enum gs_color_format format
Definition: graphics.h:488
void(* gs_indexbuffer_flush)(gs_indexbuffer_t *indexbuffer)
Definition: graphics-internal.h:232
void(* device_set_scissor_rect)(gs_device_t *device, const struct gs_rect *rect)
Definition: graphics-internal.h:176
void(* gs_shader_set_float)(gs_sparam_t *param, float val)
Definition: graphics-internal.h:262
uint32_t(* gs_voltexture_get_depth)(const gs_texture_t *voltex)
Definition: graphics-internal.h:207
gs_cull_mode
Definition: graphics.h:91
void(* gs_texture_unmap)(gs_texture_t *tex)
Definition: graphics-internal.h:195
struct blend_state cur_blend_state
Definition: graphics-internal.h:358
bool(* device_enum_adapters)(bool(*callback)(void *, const char *, uint32_t), void *)
Definition: graphics-internal.h:44
void(* device_enter_context)(gs_device_t *device)
Definition: graphics-internal.h:50
void(* gs_shader_destroy)(gs_shader_t *shader)
Definition: graphics-internal.h:251
void(* device_get_size)(const gs_device_t *device, uint32_t *x, uint32_t *y)
Definition: graphics-internal.h:56
bool(* gs_timer_range_get_data)(gs_timer_range_t *range, bool *disjoint, uint64_t *frequency)
Definition: graphics-internal.h:248
Definition: graphics.h:172
gs_blend_type
Definition: graphics.h:97
void(* gs_shader_set_texture)(gs_sparam_t *param, gs_texture_t *val)
Definition: graphics-internal.h:271
void(* device_set_cube_render_target)(gs_device_t *device, gs_texture_t *cubetex, int side, gs_zstencil_t *zstencil)
Definition: graphics-internal.h:121
gs_depth_test
Definition: graphics.h:111
void(* gs_shader_set_vec3)(gs_sparam_t *param, const struct vec3 *val)
Definition: graphics-internal.h:269
void(* gs_zstencil_destroy)(gs_zstencil_t *zstencil)
Definition: graphics-internal.h:220
enum gs_blend_type dest_c
Definition: graphics-internal.h:324
bool(* device_nv12_available)(gs_device_t *device)
Definition: graphics-internal.h:278
uint32_t(* gs_texture_get_height)(const gs_texture_t *tex)
Definition: graphics-internal.h:190
void(* gs_shader_set_bool)(gs_sparam_t *param, bool val)
Definition: graphics-internal.h:261
void(* device_draw)(gs_device_t *device, enum gs_draw_mode draw_mode, uint32_t start_vert, uint32_t num_verts)
Definition: graphics-internal.h:135
enum gs_index_type(* gs_indexbuffer_get_type)(const gs_indexbuffer_t *indexbuffer)
Definition: graphics-internal.h:238
int(* device_create)(gs_device_t **device, uint32_t adapter)
Definition: graphics-internal.h:48
pthread_mutex_t effect_mutex
Definition: graphics-internal.h:352
struct gs_vb_data * vbd
Definition: graphics-internal.h:345
void(* device_blend_function)(gs_device_t *device, enum gs_blend_type src, enum gs_blend_type dest)
Definition: graphics-internal.h:154
enum gs_color_format(* gs_cubetexture_get_color_format)(const gs_texture_t *cubetex)
Definition: graphics-internal.h:201
bool(* gs_texture_map)(gs_texture_t *tex, uint8_t **ptr, uint32_t *linesize)
Definition: graphics-internal.h:193
float y
Definition: vec4.h:34
void(* device_set_render_target)(gs_device_t *device, gs_texture_t *tex, gs_zstencil_t *zstencil)
Definition: graphics-internal.h:119
void(* device_load_texture)(gs_device_t *device, gs_texture_t *tex, int unit)
Definition: graphics-internal.h:104
void(* gs_stagesurface_unmap)(gs_stagesurf_t *stagesurf)
Definition: graphics-internal.h:218
struct gs_zstencil_buffer gs_zstencil_t
Definition: graphics.h:268
pthread_mutex_t mutex
Definition: graphics-internal.h:355
gs_texture_type
Definition: graphics.h:166
struct gs_swap_chain gs_swapchain_t
Definition: graphics.h:272
int(* gs_shader_get_num_params)(const gs_shader_t *shader)
Definition: graphics-internal.h:252
enum gs_color_format(* gs_voltexture_get_color_format)(const gs_texture_t *voltex)
Definition: graphics-internal.h:208
void(* device_load_default_samplerstate)(gs_device_t *device, bool b_3d, int unit)
Definition: graphics-internal.h:113
bool(* gs_timer_range_end)(gs_timer_range_t *range)
Definition: graphics-internal.h:247
void * data
Definition: graphics.h:175
void(* gs_shader_set_vec2)(gs_sparam_t *param, const struct vec2 *val)
Definition: graphics-internal.h:268
void(* device_set_cull_mode)(gs_device_t *device, enum gs_cull_mode mode)
Definition: graphics-internal.h:145
void(* gs_texture_destroy)(gs_texture_t *tex)
Definition: graphics-internal.h:188
enum gs_color_format(* gs_stagesurface_get_color_format)(const gs_stagesurf_t *stagesurf)
Definition: graphics-internal.h:214
struct gs_exports exports
Definition: graphics-internal.h:332
void(* gs_swapchain_destroy)(gs_swapchain_t *swapchain)
Definition: graphics-internal.h:186
Definition: graphics.h:239
void(* device_copy_texture_region)(gs_device_t *device, gs_texture_t *dst, uint32_t dst_x, uint32_t dst_y, gs_texture_t *src, uint32_t src_x, uint32_t src_y, uint32_t src_w, uint32_t src_h)
Definition: graphics-internal.h:126
void(* device_blend_function_separate)(gs_device_t *device, enum gs_blend_type src_c, enum gs_blend_type dest_c, enum gs_blend_type src_a, enum gs_blend_type dest_a)
Definition: graphics-internal.h:157
enum gs_texture_type(* device_get_texture_type)(const gs_texture_t *texture)
Definition: graphics-internal.h:98
void(* device_begin_frame)(gs_device_t *device)
Definition: graphics-internal.h:133
void(* gs_stagesurface_destroy)(gs_stagesurf_t *stagesurf)
Definition: graphics-internal.h:211
void(* device_frustum)(gs_device_t *device, float left, float right, float top, float bottom, float znear, float zfar)
Definition: graphics-internal.h:180
float x
Definition: vec4.h:34
void(* gs_shader_set_next_sampler)(gs_sparam_t *param, gs_samplerstate_t *sampler)
Definition: graphics-internal.h:275
void(* gs_shader_set_val)(gs_sparam_t *param, const void *val, size_t size)
Definition: graphics-internal.h:272
void(* gs_indexbuffer_flush_direct)(gs_indexbuffer_t *indexbuffer, const void *data)
Definition: graphics-internal.h:233
uint32_t(* gs_cubetexture_get_size)(const gs_texture_t *cubetex)
Definition: graphics-internal.h:200
int(* device_get_type)(void)
Definition: graphics-internal.h:43
void(* device_load_samplerstate)(gs_device_t *device, gs_samplerstate_t *samplerstate, int unit)
Definition: graphics-internal.h:106
void(* device_copy_texture)(gs_device_t *device, gs_texture_t *dst, gs_texture_t *src)
Definition: graphics-internal.h:124