glsl: don't reprocess or clear UBOs on cache fallback
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
01d1e5a7ad
commit
cad1a9bfde
|
@ -2252,6 +2252,7 @@ link_intrastage_shaders(void *mem_ctx,
|
|||
v.run(linked->ir);
|
||||
v.fixup_unnamed_interface_types();
|
||||
|
||||
if (!prog->data->cache_fallback) {
|
||||
/* Link up uniform blocks defined within this stage. */
|
||||
link_uniform_blocks(mem_ctx, ctx, prog, linked, &ubo_blocks,
|
||||
&num_ubo_blocks, &ssbo_blocks, &num_ssbo_blocks);
|
||||
|
@ -2278,6 +2279,7 @@ link_intrastage_shaders(void *mem_ctx,
|
|||
linked->Program->sh.ShaderStorageBlocks[i] = &ssbo_blocks[i];
|
||||
}
|
||||
linked->Program->info.num_ssbos = num_ssbo_blocks;
|
||||
}
|
||||
|
||||
/* At this point linked should contain all of the linked IR, so
|
||||
* validate it to make sure nothing went wrong.
|
||||
|
@ -4870,6 +4872,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
if (prog->SeparateShader)
|
||||
disable_varying_optimizations_for_sso(prog);
|
||||
|
||||
if (!prog->data->cache_fallback) {
|
||||
/* Process UBOs */
|
||||
if (!interstage_cross_validate_uniform_blocks(prog, false))
|
||||
goto done;
|
||||
|
@ -4877,6 +4880,7 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
/* Process SSBOs */
|
||||
if (!interstage_cross_validate_uniform_blocks(prog, true))
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Do common optimization before assigning storage for attributes,
|
||||
* uniforms, and varyings. Later optimization could possibly make
|
||||
|
|
|
@ -351,6 +351,7 @@ _mesa_clear_shader_program_data(struct gl_context *ctx,
|
|||
ralloc_free(shProg->data->InfoLog);
|
||||
shProg->data->InfoLog = ralloc_strdup(shProg->data, "");
|
||||
|
||||
if (!shProg->data->cache_fallback) {
|
||||
ralloc_free(shProg->data->UniformBlocks);
|
||||
shProg->data->UniformBlocks = NULL;
|
||||
shProg->data->NumUniformBlocks = 0;
|
||||
|
@ -358,6 +359,7 @@ _mesa_clear_shader_program_data(struct gl_context *ctx,
|
|||
ralloc_free(shProg->data->ShaderStorageBlocks);
|
||||
shProg->data->ShaderStorageBlocks = NULL;
|
||||
shProg->data->NumShaderStorageBlocks = 0;
|
||||
}
|
||||
|
||||
if (shProg->data->AtomicBuffers && !shProg->data->cache_fallback) {
|
||||
ralloc_free(shProg->data->AtomicBuffers);
|
||||
|
|
Loading…
Reference in New Issue