New upstream version 25.0.8+dfsg1
This commit is contained in:
parent
8b2e5f2130
commit
8e020cdacb
115 changed files with 1767 additions and 10949 deletions
|
|
@ -7,8 +7,11 @@ include_directories(${OPENGL_INCLUDE_DIR})
|
|||
add_definitions(-DLIBOBS_EXPORTS)
|
||||
|
||||
if(WIN32)
|
||||
set(MODULE_DESCRIPTION "OBS Library OpenGL wrapper")
|
||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in libobs-opengl.rc)
|
||||
set(libobs-opengl_PLATFORM_SOURCES
|
||||
gl-windows.c)
|
||||
gl-windows.c
|
||||
libobs-opengl.rc)
|
||||
elseif(APPLE)
|
||||
set(libobs-opengl_PLATFORM_SOURCES
|
||||
gl-cocoa.m)
|
||||
|
|
|
|||
|
|
@ -270,6 +270,7 @@ static inline void gl_write_structs(struct gl_shader_parser *glsp)
|
|||
* mul -> (change to operator)
|
||||
* rsqrt -> inversesqrt
|
||||
* saturate -> (use clamp)
|
||||
* sincos -> (map to manual sin/cos calls)
|
||||
* tex* -> texture
|
||||
* tex*grad -> textureGrad
|
||||
* tex*lod -> textureLod
|
||||
|
|
@ -301,6 +302,51 @@ static bool gl_write_mul(struct gl_shader_parser *glsp,
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool gl_write_sincos(struct gl_shader_parser *glsp,
|
||||
struct cf_token **p_token)
|
||||
{
|
||||
struct cf_parser *cfp = &glsp->parser.cfp;
|
||||
struct dstr var = {0};
|
||||
bool success = false;
|
||||
|
||||
cfp->cur_token = *p_token;
|
||||
|
||||
if (!cf_next_token(cfp))
|
||||
return false;
|
||||
if (!cf_token_is(cfp, "("))
|
||||
return false;
|
||||
|
||||
dstr_printf(&var, "sincos_var_internal_%d", glsp->sincos_counter++);
|
||||
|
||||
dstr_cat(&glsp->gl_string, "float ");
|
||||
dstr_cat_dstr(&glsp->gl_string, &var);
|
||||
dstr_cat(&glsp->gl_string, " = ");
|
||||
gl_write_function_contents(glsp, &cfp->cur_token, ",");
|
||||
dstr_cat(&glsp->gl_string, "); ");
|
||||
|
||||
if (!cf_next_token(cfp))
|
||||
goto fail;
|
||||
gl_write_function_contents(glsp, &cfp->cur_token, ",");
|
||||
dstr_cat(&glsp->gl_string, " = sin(");
|
||||
dstr_cat_dstr(&glsp->gl_string, &var);
|
||||
dstr_cat(&glsp->gl_string, "); ");
|
||||
|
||||
if (!cf_next_token(cfp))
|
||||
goto fail;
|
||||
gl_write_function_contents(glsp, &cfp->cur_token, ")");
|
||||
dstr_cat(&glsp->gl_string, " = cos(");
|
||||
dstr_cat_dstr(&glsp->gl_string, &var);
|
||||
dstr_cat(&glsp->gl_string, ")");
|
||||
|
||||
success = true;
|
||||
|
||||
fail:
|
||||
dstr_free(&var);
|
||||
|
||||
*p_token = cfp->cur_token;
|
||||
return success;
|
||||
}
|
||||
|
||||
static bool gl_write_saturate(struct gl_shader_parser *glsp,
|
||||
struct cf_token **p_token)
|
||||
{
|
||||
|
|
@ -404,7 +450,7 @@ static bool gl_write_intrinsic(struct gl_shader_parser *glsp,
|
|||
bool written = true;
|
||||
|
||||
if (strref_cmp(&token->str, "atan2") == 0) {
|
||||
dstr_cat(&glsp->gl_string, "atan2");
|
||||
dstr_cat(&glsp->gl_string, "atan");
|
||||
} else if (strref_cmp(&token->str, "ddx") == 0) {
|
||||
dstr_cat(&glsp->gl_string, "dFdx");
|
||||
} else if (strref_cmp(&token->str, "ddy") == 0) {
|
||||
|
|
@ -421,6 +467,8 @@ static bool gl_write_intrinsic(struct gl_shader_parser *glsp,
|
|||
written = gl_write_saturate(glsp, &token);
|
||||
} else if (strref_cmp(&token->str, "mul") == 0) {
|
||||
written = gl_write_mul(glsp, &token);
|
||||
} else if (strref_cmp(&token->str, "sincos") == 0) {
|
||||
written = gl_write_sincos(glsp, &token);
|
||||
} else {
|
||||
struct shader_var *var = sp_getparam(glsp, token);
|
||||
if (var && astrcmp_n(var->type, "texture", 7) == 0)
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ struct gl_shader_parser {
|
|||
const char *output_prefix;
|
||||
struct shader_parser parser;
|
||||
struct dstr gl_string;
|
||||
int sincos_counter;
|
||||
|
||||
DARRAY(uint32_t) texture_samplers;
|
||||
DARRAY(struct gl_parser_attrib) attribs;
|
||||
|
|
@ -70,6 +71,7 @@ static inline void gl_shader_parser_init(struct gl_shader_parser *glsp,
|
|||
dstr_init(&glsp->gl_string);
|
||||
da_init(glsp->texture_samplers);
|
||||
da_init(glsp->attribs);
|
||||
glsp->sincos_counter = 1;
|
||||
}
|
||||
|
||||
static inline void gl_shader_parser_free(struct gl_shader_parser *glsp)
|
||||
|
|
|
|||
|
|
@ -1264,7 +1264,6 @@ void device_set_viewport(gs_device_t *device, int x, int y, int width,
|
|||
int height)
|
||||
{
|
||||
uint32_t base_height = 0;
|
||||
int gl_y = 0;
|
||||
|
||||
/* GL uses bottom-up coordinates for viewports. We want top-down */
|
||||
if (device->cur_render_target) {
|
||||
|
|
@ -1274,7 +1273,8 @@ void device_set_viewport(gs_device_t *device, int x, int y, int width,
|
|||
gl_getclientsize(device->cur_swap, &dw, &base_height);
|
||||
}
|
||||
|
||||
if (base_height)
|
||||
GLint gl_y = y;
|
||||
if (base_height && !device->cur_fbo)
|
||||
gl_y = base_height - y - height;
|
||||
|
||||
glViewport(x, gl_y, width, height);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue