mirror of
https://github.com/brl/mutter.git
synced 2025-02-16 13:24:09 +00:00
cogl: Clean up private feature flags and GLSL builtin handling of same
https://gitlab.gnome.org/GNOME/mutter/merge_requests/995
This commit is contained in:
parent
347619a85f
commit
5b1ff5935e
@ -50,10 +50,8 @@ typedef enum
|
|||||||
COGL_PRIVATE_FEATURE_UNPACK_SUBIMAGE,
|
COGL_PRIVATE_FEATURE_UNPACK_SUBIMAGE,
|
||||||
COGL_PRIVATE_FEATURE_SAMPLER_OBJECTS,
|
COGL_PRIVATE_FEATURE_SAMPLER_OBJECTS,
|
||||||
COGL_PRIVATE_FEATURE_READ_PIXELS_ANY_FORMAT,
|
COGL_PRIVATE_FEATURE_READ_PIXELS_ANY_FORMAT,
|
||||||
COGL_PRIVATE_FEATURE_ALPHA_TEST,
|
|
||||||
COGL_PRIVATE_FEATURE_FORMAT_CONVERSION,
|
COGL_PRIVATE_FEATURE_FORMAT_CONVERSION,
|
||||||
COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS,
|
COGL_PRIVATE_FEATURE_QUERY_FRAMEBUFFER_BITS,
|
||||||
COGL_PRIVATE_FEATURE_BUILTIN_POINT_SIZE_UNIFORM,
|
|
||||||
COGL_PRIVATE_FEATURE_QUERY_TEXTURE_PARAMETERS,
|
COGL_PRIVATE_FEATURE_QUERY_TEXTURE_PARAMETERS,
|
||||||
COGL_PRIVATE_FEATURE_ALPHA_TEXTURES,
|
COGL_PRIVATE_FEATURE_ALPHA_TEXTURES,
|
||||||
COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE,
|
COGL_PRIVATE_FEATURE_TEXTURE_SWIZZLE,
|
||||||
|
@ -71,22 +71,16 @@ typedef struct
|
|||||||
void *getter_func;
|
void *getter_func;
|
||||||
UpdateUniformFunc update_func;
|
UpdateUniformFunc update_func;
|
||||||
CoglPipelineState change;
|
CoglPipelineState change;
|
||||||
|
|
||||||
/* This builtin is only necessary if the following private feature
|
|
||||||
* is not implemented in the driver */
|
|
||||||
CoglPrivateFeature feature_replacement;
|
|
||||||
} BuiltinUniformData;
|
} BuiltinUniformData;
|
||||||
|
|
||||||
static BuiltinUniformData builtin_uniforms[] =
|
static BuiltinUniformData builtin_uniforms[] =
|
||||||
{
|
{
|
||||||
{ "cogl_point_size_in",
|
{ "cogl_point_size_in",
|
||||||
cogl_pipeline_get_point_size, update_float_uniform,
|
cogl_pipeline_get_point_size, update_float_uniform,
|
||||||
COGL_PIPELINE_STATE_POINT_SIZE,
|
COGL_PIPELINE_STATE_POINT_SIZE },
|
||||||
COGL_PRIVATE_FEATURE_BUILTIN_POINT_SIZE_UNIFORM },
|
|
||||||
{ "_cogl_alpha_test_ref",
|
{ "_cogl_alpha_test_ref",
|
||||||
cogl_pipeline_get_alpha_test_reference, update_float_uniform,
|
cogl_pipeline_get_alpha_test_reference, update_float_uniform,
|
||||||
COGL_PIPELINE_STATE_ALPHA_FUNC_REFERENCE,
|
COGL_PIPELINE_STATE_ALPHA_FUNC_REFERENCE },
|
||||||
COGL_PRIVATE_FEATURE_ALPHA_TEST }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const CoglPipelineProgend _cogl_pipeline_glsl_progend;
|
const CoglPipelineProgend _cogl_pipeline_glsl_progend;
|
||||||
@ -462,9 +456,7 @@ update_builtin_uniforms (CoglContext *context,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (builtin_uniforms); i++)
|
for (i = 0; i < G_N_ELEMENTS (builtin_uniforms); i++)
|
||||||
if (!_cogl_has_private_feature (context,
|
if ((program_state->dirty_builtin_uniforms & (1 << i)) &&
|
||||||
builtin_uniforms[i].feature_replacement) &&
|
|
||||||
(program_state->dirty_builtin_uniforms & (1 << i)) &&
|
|
||||||
program_state->builtin_uniform_locations[i] != -1)
|
program_state->builtin_uniform_locations[i] != -1)
|
||||||
builtin_uniforms[i].update_func (pipeline,
|
builtin_uniforms[i].update_func (pipeline,
|
||||||
program_state
|
program_state
|
||||||
@ -793,11 +785,9 @@ _cogl_pipeline_progend_glsl_end (CoglPipeline *pipeline,
|
|||||||
clear_flushed_matrix_stacks (program_state);
|
clear_flushed_matrix_stacks (program_state);
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (builtin_uniforms); i++)
|
for (i = 0; i < G_N_ELEMENTS (builtin_uniforms); i++)
|
||||||
if (!_cogl_has_private_feature
|
GE_RET( program_state->builtin_uniform_locations[i], ctx,
|
||||||
(ctx, builtin_uniforms[i].feature_replacement))
|
glGetUniformLocation (gl_program,
|
||||||
GE_RET( program_state->builtin_uniform_locations[i], ctx,
|
builtin_uniforms[i].uniform_name) );
|
||||||
glGetUniformLocation (gl_program,
|
|
||||||
builtin_uniforms[i].uniform_name) );
|
|
||||||
|
|
||||||
GE_RET( program_state->modelview_uniform, ctx,
|
GE_RET( program_state->modelview_uniform, ctx,
|
||||||
glGetUniformLocation (gl_program,
|
glGetUniformLocation (gl_program,
|
||||||
@ -850,9 +840,7 @@ _cogl_pipeline_progend_glsl_pre_change_notify (CoglPipeline *pipeline,
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (builtin_uniforms); i++)
|
for (i = 0; i < G_N_ELEMENTS (builtin_uniforms); i++)
|
||||||
if (!_cogl_has_private_feature
|
if (change & builtin_uniforms[i].change)
|
||||||
(ctx, builtin_uniforms[i].feature_replacement) &&
|
|
||||||
(change & builtin_uniforms[i].change))
|
|
||||||
{
|
{
|
||||||
CoglPipelineProgramState *program_state
|
CoglPipelineProgramState *program_state
|
||||||
= get_program_state (pipeline);
|
= get_program_state (pipeline);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user