cogl: Get the authority for vertex/fragment_snippets_state_equal
They expect the authority of the pipeline, which is not necessarily the pipeline we're operating on. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3924 Fixes: 5e98ee5dbe ("cogl: Add pipeline hooks to user program pipelines") Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4298>
This commit is contained in:
parent
d8512767ea
commit
b7e6f6d144
@ -729,6 +729,7 @@ needs_recompile (CoglShader *shader,
|
||||
* are the pipeline layer-indices, texture-unit-indices and
|
||||
* snippets
|
||||
*/
|
||||
CoglPipeline *authority, *authority_prev;
|
||||
|
||||
if (pipeline == prev)
|
||||
return FALSE;
|
||||
@ -739,11 +740,25 @@ needs_recompile (CoglShader *shader,
|
||||
switch (shader->type)
|
||||
{
|
||||
case COGL_SHADER_TYPE_VERTEX:
|
||||
if (!_cogl_pipeline_vertex_snippets_state_equal (prev, pipeline))
|
||||
authority =
|
||||
_cogl_pipeline_get_authority (pipeline,
|
||||
COGL_PIPELINE_STATE_VERTEX_SNIPPETS);
|
||||
authority_prev =
|
||||
_cogl_pipeline_get_authority (prev,
|
||||
COGL_PIPELINE_STATE_VERTEX_SNIPPETS);
|
||||
|
||||
if (!_cogl_pipeline_vertex_snippets_state_equal (authority_prev, authority))
|
||||
return TRUE;
|
||||
break;
|
||||
case COGL_SHADER_TYPE_FRAGMENT:
|
||||
if (!_cogl_pipeline_fragment_snippets_state_equal (prev, pipeline))
|
||||
authority =
|
||||
_cogl_pipeline_get_authority (pipeline,
|
||||
COGL_PIPELINE_STATE_FRAGMENT_SNIPPETS);
|
||||
authority_prev =
|
||||
_cogl_pipeline_get_authority (prev,
|
||||
COGL_PIPELINE_STATE_FRAGMENT_SNIPPETS);
|
||||
|
||||
if (!_cogl_pipeline_fragment_snippets_state_equal (authority_prev, authority))
|
||||
return TRUE;
|
||||
break;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user