progend-glsl: dirty prog for vertex state changes
_cogl_pipeline_progend_glsl_pre_change_notify and _cogl_pipeline_progend_glsl_layer_pre_change_notify were only dirtying the current program state for changes related to fragment processing. This make both functions also check for changes that affect vertex shader codegen. This also fixes a mistake where _cogl_pipeline_progend_glsl_layer_pre_change_notify was checking for non-layer related changes which would never be seen, and instead it should be checking for layer based changes only.
This commit is contained in:
parent
7fa04bb1a6
commit
56ae6f9afa
@ -830,8 +830,11 @@ _cogl_pipeline_progend_glsl_pre_change_notify (CoglPipeline *pipeline,
|
||||
{
|
||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||
|
||||
if ((change & _cogl_pipeline_get_state_for_fragment_codegen (ctx)))
|
||||
dirty_program_state (pipeline);
|
||||
if ((change & (_cogl_pipeline_get_state_for_fragment_codegen (ctx) |
|
||||
COGL_PIPELINE_STATE_AFFECTS_VERTEX_CODEGEN)))
|
||||
{
|
||||
dirty_program_state (pipeline);
|
||||
}
|
||||
else
|
||||
{
|
||||
int i;
|
||||
@ -866,13 +869,12 @@ _cogl_pipeline_progend_glsl_layer_pre_change_notify (
|
||||
{
|
||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||
|
||||
if ((change & _cogl_pipeline_get_state_for_fragment_codegen (ctx)))
|
||||
if ((change & (_cogl_pipeline_get_layer_state_for_fragment_codegen (ctx) |
|
||||
COGL_PIPELINE_LAYER_STATE_AFFECTS_VERTEX_CODEGEN)))
|
||||
{
|
||||
dirty_program_state (owner);
|
||||
return;
|
||||
}
|
||||
|
||||
if (change & COGL_PIPELINE_LAYER_STATE_COMBINE_CONSTANT)
|
||||
else if (change & COGL_PIPELINE_LAYER_STATE_COMBINE_CONSTANT)
|
||||
{
|
||||
CoglPipelineProgramState *program_state = get_program_state (owner);
|
||||
if (program_state)
|
||||
@ -881,8 +883,7 @@ _cogl_pipeline_progend_glsl_layer_pre_change_notify (
|
||||
program_state->unit_state[unit_index].dirty_combine_constant = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (change & COGL_PIPELINE_LAYER_STATE_USER_MATRIX)
|
||||
else if (change & COGL_PIPELINE_LAYER_STATE_USER_MATRIX)
|
||||
{
|
||||
CoglPipelineProgramState *program_state = get_program_state (owner);
|
||||
if (program_state)
|
||||
|
Loading…
x
Reference in New Issue
Block a user