jp9000
41fad2d1a4
(API Change) Use const params where applicable
...
This Fixes a minor flaw with the API where data had to always be mutable
to be usable by the API.
Functions that do not modify the fundamental underlying data of a
structure should be marked as constant, both for safety and to signify
that the parameter is input only and will not be modified by the
function using it.
2014-09-26 17:23:07 -07:00
GoaLitiuM
10f5d7f3aa
Fixed NULL pointer dereferencing in linked lists
2014-09-27 01:35:36 +03:00
jp9000
0ef7a3f3d0
libobs-opengl: Fix styling (80 column limit)
2014-09-25 21:48:16 -07:00
jp9000
c9df41c1e2
(API Change) Remove pointers from all typedefs
...
Typedef pointers are unsafe. If you do:
typedef struct bla *bla_t;
then you cannot use it as a constant, such as: const bla_t, because
that constant will be to the pointer itself rather than to the
underlying data. I admit this was a fundamental mistake that must
be corrected.
All typedefs that were pointer types will now have their pointers
removed from the type itself, and the pointers will be used when they
are actually used as variables/parameters/returns instead.
This does not break ABI though, which is pretty nice.
2014-09-25 21:48:11 -07:00
jp9000
732d24caa1
Remove unused variables
2014-09-19 18:46:25 -07:00
jp9000
3967c6354a
Replace ARB_separate_shader_objects extension
...
This replaces the ARB_separate_shader_objects extension with traditional
linked shaders. I was able to get the existing system to use linked
shaders without having to change any libobs graphics API.
This essentially creates a linked list of shader programs with
references to the shaders they link. Before draw, it searches that
linked list for a particular pixel/vertex shader pair, and the linked
program associated with it. If no matching program exists, it creates
the program.
2014-09-19 18:23:51 -07:00
jp9000
4654eca6b8
Remove GL shader debug text
2014-08-21 03:04:20 -07:00
jp9000
5780f3f177
(API Change) Improve graphics API consistency
...
Summary:
- Prefix all graphics subsystem names with gs_ or GS_
- Unsquish funciton names (for example _setfloat to _set_float)
- Changed create functions to be more consistent with the rest of the
API elsewhere. For exmaple, instead of
gs_create_texture/gs_texture_destroy, it's now
gs_texture_create/gs_texture_destroy
- Renamed gs_stencil_op enum to gs_stencil_op_type
From: To:
-----------------------------------------------------------
tvertarray gs_tvertarray
vb_data gs_vb_data
vbdata_create gs_vbdata_create
vbdata_destroy gs_vbdata_destroy
shader_param gs_shader_param
gs_effect gs_effect
effect_technique gs_effect_technique
effect_pass gs_effect_pass
effect_param gs_effect_param
texture_t gs_texture_t
stagesurf_t gs_stagesurf_t
zstencil_t gs_zstencil_t
vertbuffer_t gs_vertbuffer_t
indexbuffer_t gs_indexbuffer_t
samplerstate_t gs_samplerstate_t
swapchain_t gs_swapchain_t
texrender_t gs_texrender_t
shader_t gs_shader_t
sparam_t gs_sparam_t
effect_t gs_effect_t
technique_t gs_technique_t
eparam_t gs_eparam_t
device_t gs_device_t
graphics_t graphics_t
shader_param_type gs_shader_param_type
SHADER_PARAM_UNKNOWN GS_SHADER_PARAM_UNKNOWN
SHADER_PARAM_BOOL GS_SHADER_PARAM_BOOL
SHADER_PARAM_FLOAT GS_SHADER_PARAM_FLOAT
SHADER_PARAM_INT GS_SHADER_PARAM_INT
SHADER_PARAM_STRING GS_SHADER_PARAM_STRING
SHADER_PARAM_VEC2 GS_SHADER_PARAM_VEC2
SHADER_PARAM_VEC3 GS_SHADER_PARAM_VEC3
SHADER_PARAM_VEC4 GS_SHADER_PARAM_VEC4
SHADER_PARAM_MATRIX4X4 GS_SHADER_PARAM_MATRIX4X4
SHADER_PARAM_TEXTURE GS_SHADER_PARAM_TEXTURE
shader_param_info gs_shader_param_info
shader_type gs_shader_type
SHADER_VERTEX GS_SHADER_VERTEX
SHADER_PIXEL GS_SHADER_PIXEL
shader_destroy gs_shader_destroy
shader_numparams gs_shader_get_num_params
shader_getparambyidx gs_shader_get_param_by_idx
shader_getparambyname gs_shader_get_param_by_name
shader_getviewprojmatrix gs_shader_get_viewproj_matrix
shader_getworldmatrix gs_shader_get_world_matrix
shader_getparaminfo gs_shader_get_param_info
shader_setbool gs_shader_set_bool
shader_setfloat gs_shader_set_float
shader_setint gs_shader_set_int
shader_setmatrix3 gs_shader_setmatrix3
shader_setmatrix4 gs_shader_set_matrix4
shader_setvec2 gs_shader_set_vec2
shader_setvec3 gs_shader_set_vec3
shader_setvec4 gs_shader_set_vec4
shader_settexture gs_shader_set_texture
shader_setval gs_shader_set_val
shader_setdefault gs_shader_set_default
effect_property_type gs_effect_property_type
EFFECT_NONE GS_EFFECT_NONE
EFFECT_BOOL GS_EFFECT_BOOL
EFFECT_FLOAT GS_EFFECT_FLOAT
EFFECT_COLOR GS_EFFECT_COLOR
EFFECT_TEXTURE GS_EFFECT_TEXTURE
effect_param_info gs_effect_param_info
effect_destroy gs_effect_destroy
effect_gettechnique gs_effect_get_technique
technique_begin gs_technique_begin
technique_end gs_technique_end
technique_beginpass gs_technique_begin_pass
technique_beginpassbyname gs_technique_begin_pass_by_name
technique_endpass gs_technique_end_pass
effect_numparams gs_effect_get_num_params
effect_getparambyidx gs_effect_get_param_by_idx
effect_getparambyname gs_effect_get_param_by_name
effect_updateparams gs_effect_update_params
effect_getviewprojmatrix gs_effect_get_viewproj_matrix
effect_getworldmatrix gs_effect_get_world_matrix
effect_getparaminfo gs_effect_get_param_info
effect_setbool gs_effect_set_bool
effect_setfloat gs_effect_set_float
effect_setint gs_effect_set_int
effect_setmatrix4 gs_effect_set_matrix4
effect_setvec2 gs_effect_set_vec2
effect_setvec3 gs_effect_set_vec3
effect_setvec4 gs_effect_set_vec4
effect_settexture gs_effect_set_texture
effect_setval gs_effect_set_val
effect_setdefault gs_effect_set_default
texrender_create gs_texrender_create
texrender_destroy gs_texrender_destroy
texrender_begin gs_texrender_begin
texrender_end gs_texrender_end
texrender_reset gs_texrender_reset
texrender_gettexture gs_texrender_get_texture
GS_BUILDMIPMAPS GS_BUILD_MIPMAPS
GS_RENDERTARGET GS_RENDER_TARGET
gs_device_name gs_get_device_name
gs_device_type gs_get_device_type
gs_entercontext gs_enter_context
gs_leavecontext gs_leave_context
gs_getcontext gs_get_context
gs_renderstart gs_render_start
gs_renderstop gs_render_stop
gs_rendersave gs_render_save
gs_getinput gs_get_input
gs_geteffect gs_get_effect
gs_create_effect_from_file gs_effect_create_from_file
gs_create_effect gs_effect_create
gs_create_vertexshader_from_file gs_vertexshader_create_from_file
gs_create_pixelshader_from_file gs_pixelshader_create_from_file
gs_create_texture_from_file gs_texture_create_from_file
gs_resetviewport gs_reset_viewport
gs_set2dmode gs_set_2d_mode
gs_set3dmode gs_set_3d_mode
gs_create_swapchain gs_swapchain_create
gs_getsize gs_get_size
gs_getwidth gs_get_width
gs_getheight gs_get_height
gs_create_texture gs_texture_create
gs_create_cubetexture gs_cubetexture_create
gs_create_volumetexture gs_voltexture_create
gs_create_zstencil gs_zstencil_create
gs_create_stagesurface gs_stagesurface_create
gs_create_samplerstate gs_samplerstate_create
gs_create_vertexshader gs_vertexshader_create
gs_create_pixelshader gs_pixelshader_create
gs_create_vertexbuffer gs_vertexbuffer_create
gs_create_indexbuffer gs_indexbuffer_create
gs_gettexturetype gs_get_texture_type
gs_load_defaultsamplerstate gs_load_default_samplerstate
gs_getvertexshader gs_get_vertex_shader
gs_getpixelshader gs_get_pixel_shader
gs_getrendertarget gs_get_render_target
gs_getzstenciltarget gs_get_zstencil_target
gs_setrendertarget gs_set_render_target
gs_setcuberendertarget gs_set_cube_render_target
gs_beginscene gs_begin_scene
gs_draw gs_draw
gs_endscene gs_end_scene
gs_setcullmode gs_set_cull_mode
gs_getcullmode gs_get_cull_mode
gs_enable_depthtest gs_enable_depth_test
gs_enable_stenciltest gs_enable_stencil_test
gs_enable_stencilwrite gs_enable_stencil_write
gs_blendfunction gs_blend_function
gs_depthfunction gs_depth_function
gs_stencilfunction gs_stencil_function
gs_stencilop gs_stencil_op
gs_setviewport gs_set_viewport
gs_getviewport gs_get_viewport
gs_setscissorrect gs_set_scissor_rect
gs_create_texture_from_iosurface gs_texture_create_from_iosurface
gs_create_gdi_texture gs_texture_create_gdi
gs_is_compressed_format gs_is_compressed_format
gs_num_total_levels gs_get_total_levels
texture_setimage gs_texture_set_image
cubetexture_setimage gs_cubetexture_set_image
swapchain_destroy gs_swapchain_destroy
texture_destroy gs_texture_destroy
texture_getwidth gs_texture_get_width
texture_getheight gs_texture_get_height
texture_getcolorformat gs_texture_get_color_format
texture_map gs_texture_map
texture_unmap gs_texture_unmap
texture_isrect gs_texture_is_rect
texture_getobj gs_texture_get_obj
cubetexture_destroy gs_cubetexture_destroy
cubetexture_getsize gs_cubetexture_get_size
cubetexture_getcolorformat gs_cubetexture_get_color_format
volumetexture_destroy gs_voltexture_destroy
volumetexture_getwidth gs_voltexture_get_width
volumetexture_getheight gs_voltexture_get_height
volumetexture_getdepth gs_voltexture_getdepth
volumetexture_getcolorformat gs_voltexture_get_color_format
stagesurface_destroy gs_stagesurface_destroy
stagesurface_getwidth gs_stagesurface_get_width
stagesurface_getheight gs_stagesurface_get_height
stagesurface_getcolorformat gs_stagesurface_get_color_format
stagesurface_map gs_stagesurface_map
stagesurface_unmap gs_stagesurface_unmap
zstencil_destroy gs_zstencil_destroy
samplerstate_destroy gs_samplerstate_destroy
vertexbuffer_destroy gs_vertexbuffer_destroy
vertexbuffer_flush gs_vertexbuffer_flush
vertexbuffer_getdata gs_vertexbuffer_get_data
indexbuffer_destroy gs_indexbuffer_destroy
indexbuffer_flush gs_indexbuffer_flush
indexbuffer_getdata gs_indexbuffer_get_data
indexbuffer_numindices gs_indexbuffer_get_num_indices
indexbuffer_gettype gs_indexbuffer_get_type
texture_rebind_iosurface gs_texture_rebind_iosurface
texture_get_dc gs_texture_get_dc
texture_release_dc gs_texture_release_dc
2014-08-09 11:57:38 -07:00
jp9000
9d300685ca
(API Change) Unsquish libobs/util
...
Changed: To:
-----------------------------------------------------------
dstr_isempty dstr_is_empty
cf_lexer_gettokens cf_lexer_get_tokens
cf_preprocessor_gettokens cf_preprocessor_get_tokens
2014-08-09 11:57:37 -07:00
jp9000
778cc2b318
(API Change) obs_reset_video: Use return codes
...
Changed API functions:
libobs: obs_reset_video
Before, video initialization returned a boolean, but "failed" is too
little information, if it fails due to lack of device capabilities or
bad video device parameters, the front-end needs to know that.
The OBS Basic UI has also been updated to reflect this API change.
2014-07-20 18:25:57 -07:00
jp9000
89a5bdbcf1
Add gs_device_type function
...
This allows a programatic way of determining the type of graphics module
currently active.
2014-07-20 16:23:03 -07:00
jp9000
a446dd74af
Add gs_device_name function
...
This returns the name of the device, "Direct3D 11" or "OpenGL"
respectively.
2014-07-20 15:31:45 -07:00
jp9000
a27f2fbb3a
Fix potentially uninitialized variable warnings
2014-07-12 11:59:46 -07:00
jp9000
f675c8029f
Fix 'unused parameter' warnings on windows
2014-07-12 11:59:07 -07:00
Zachary Lund
543acf8477
Modified debug proc to possibly be more appropriate
2014-07-11 01:36:42 -05:00
BtbN
a79ff06420
Fix gl_debug_proc function for unexpected parameters
2014-07-10 14:36:16 +02:00
jp9000
7b12133af3
Use uint8_t* instead of void* for texture data
...
NOTE: In texture_setimage, I had to move variables to the top of the
scope because microsoft's C compiler will give the legacy C90 error of:
'illegal use of this type as an expression'.
To sum it up, microsoft's C compiler is still utter garbage.
2014-06-28 10:12:57 -07:00
jp9000
f025cd6f87
GL: Mark unused 'device' parameter for flush
2014-06-25 22:24:26 -07:00
jp9000
caf8ca9ba8
Remove 'shader' param from shader param functions
2014-06-25 19:50:08 -07:00
jp9000
27010a2f56
Add a 'flush' command to graphics subsystem
...
...I'm actually concerned that I went a bit overkill trying to prevent
backwards compatibility issues with this abstraction design, because
this is a large number of files that have to be modified just to add a
single graphics subsystem export. Someone's going to strangle me, and
when you know that someone might strangle you, that means that you did
something wrong. We'll have to look in to simplifying this in the
future without killing backward compatibility safety.
2014-06-25 19:32:34 -07:00
jp9000
8aa49cc9ad
Remove unused graphics subsystem functions
...
These functions were mostly related to being able to set true fullscreen
mode -- however, this has no place for our purposes, and these functions
were just sitting empty and unused, so they should be removed.
Besides, fullscreen mode only applies to the windows operating system.
2014-06-25 01:54:32 -07:00
jp9000
f4e7a893c5
Remove 'rebuild' variable from vertexbuffer_flush
...
This variable is currently somewhat pointless, I was originally going to
use it to tell the graphics subsystem to completely rebuild the internal
vertex buffers, but it would be bad/inefficient to allow that
functionality.
2014-06-25 01:54:32 -07:00
jp9000
1c2a0524b7
Change graphics subsystem to 4x4 matrices
...
4x4 matrices aren't as optimal, but are much more sensible to handle
when you want to do more advanced stuff like scaling, skewing, or
inversion.
2014-06-14 23:17:04 -07:00
jp9000
cec11d624a
OpenGL: Don't call glGetAttribLocation on outputs
...
Previously we were using glGetAttribLocation on all inputs/outputs and
then just discarding if it was returned -1. However, we have a boolean
value of 'input' in gl_parser_attrib, so there's no need to be doing
this and discarding potentially useful error handling information.
2014-06-07 19:33:41 -07:00
jp9000
3ce70778f9
OpenGL: Don't name VS inputs as 'geom' inputs.
...
Geometry shaders come after vertex shaders, not before.
2014-06-07 19:31:57 -07:00
jp9000
efaafd7cb4
OpenGL: Fix erroneous handling of BGRX
...
BGRX was being treated as "BGR input" with "RGBA storage", where it
should have been "BGRA input" with "RGB storage". So the input for the
texture was expecting 24 bits of packed BGR rather than 32bit BGRX
pixels, and was internally storing it with alpha available.
2014-06-07 15:30:05 -07:00
jp9000
b64900e630
Graphics: Comment out parsed shader logging
2014-05-18 17:37:30 -07:00
fryshorts
944c2dc9f7
Destroy swapchain before removing the window info
...
This fixes an issue reported by valgrind where cleaning up the
swapchain fails because the window info is destroyed before.
2014-05-16 20:32:30 +02:00
Thomas McGrew
59328d86ce
Added a version to the X11 GL context request
...
This enables the application to start on Intel graphics under Mesa 10.2
2014-05-12 02:31:15 -04:00
Palana
cfc3f2590e
Update OSX dependencies for cmake generators other than ninja/make
2014-05-08 14:31:43 +02:00
Palana
824ff961d0
Enable GL vertex attribute normalization
...
Fixes GL vertex color attributes
2014-05-02 00:37:32 +02:00
jp9000
5e2d283b9c
GL/D3D11: Add scissor support
2014-05-01 11:26:17 -07:00
jp9000
d9d0d87431
libobs-opengl: Fix some code formatting issues
2014-04-24 21:10:07 -07:00
Lioncash
96031f2392
Fix a possible null pointer dereference
2014-04-21 21:28:40 -04:00
Palana
12f0877ebc
Remove destroyed sampler states from the current samplers list
2014-04-19 05:25:21 +02:00
Palana
b0237fd581
Use high resolution GL surface when available
2014-04-16 22:39:20 +02:00
Jim
2fc810fd09
Merge pull request #65 from BtbN/glad
...
Move from glLoadGen to GLAD
2014-04-16 12:51:32 -07:00
BtbN
e50201cad1
Move from glLoadGen to GLAD
2014-04-15 22:19:40 +02:00
jp9000
0bec267e40
OpenGL: Fix swizzle code again for alpha textures
...
My prior code was incorrect; I mixed up the two parameters, the
GL_TEXTURE_SWIZZLE_* parameter specifies the target channel, and the
value itself specifies the source channel., If that makes sense.
2014-04-15 12:19:20 -07:00
jp9000
51d338430f
Only do the alpha swizzle on alpha textures
...
Avoids problems if swizzles are used elsewhere (like in the newer X11
plugins)
2014-04-15 04:23:55 -07:00
jp9000
bc33b09ba9
Revert OpenGL swizzle change
...
Was wrong to use the swizzle -- it was an incorrect assumption on my
part that this could work in the first place (despite working on
windows)
2014-04-12 23:57:40 -07:00
jp9000
0e9b13fcf9
Fix style errors (please don't make me do this)
2014-04-12 11:21:47 -07:00
BtbN
0f9c6e5503
Create sub window for rendering, to avoid visual mismatch issues
2014-04-12 16:24:38 +02:00
BtbN
97c94b183a
Add copy_texture_region function
2014-04-12 12:45:18 +02:00
Timo R
b9f0da026e
Move opengl loader into a seperate static library, so plugins can use it
2014-04-12 12:45:18 +02:00
jp9000
362e008b87
OpenGL: Use texture swizzle for BGRA/BGR/A8
...
On some operating systems, with specific drivers it seems that BGR/BGRA
isn't properly treated as such in certain cases. This fix will
hopefully force the formats to be treated as BGR/BGRA when actually
rendering, which should get around the implementation-specific issue.
2014-04-11 13:14:20 -07:00
Zachary Lund
92f253d65f
More extensions, less bugs
2014-04-06 16:21:19 -05:00
Zachary Lund
1dd3917745
Added GLX_NV_copy_image extension, updated tools
2014-04-05 13:49:19 -05:00
Zachary Lund
baa57d4c39
Merge branch 'master' of https://github.com/jp9000/obs-studio
2014-04-03 20:12:26 -05:00
Zachary Lund
e5b90accb9
Removed no longer valid comment
2014-04-03 19:24:03 -05:00