summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-04-27 15:41:19 +1000
committerTimothy Arceri <[email protected]>2017-02-17 11:18:43 +1100
commit794f7326bcc3ffb7ab473d2c10a8c81ff4958167 (patch)
tree1efd2f1eaae2fe03ee0d6ae05db83cb69e06224b /src/mesa
parent0e9991f957e296f46cfff40a94ffba0adf2a58e1 (diff)
glsl: don't lose uniform values when falling back to full compile
Here we skip the recreation of uniform storage if we are relinking after a cache miss. This is improtant because uniform values may have already been set by the application and we don't want to reset them. Reviewed-by: Nicolai Hähnle <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/shaderobj.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c
index 2ca65442726..8cc90736801 100644
--- a/src/mesa/main/shaderobj.c
+++ b/src/mesa/main/shaderobj.c
@@ -327,7 +327,7 @@ _mesa_clear_shader_program_data(struct gl_context *ctx,
shProg->data->linked_stages = 0;
- if (shProg->data->UniformStorage) {
+ if (shProg->data->UniformStorage && !shProg->data->cache_fallback) {
for (unsigned i = 0; i < shProg->data->NumUniformStorage; ++i)
_mesa_uniform_detach_all_driver_storage(&shProg->data->
UniformStorage[i]);
@@ -336,7 +336,7 @@ _mesa_clear_shader_program_data(struct gl_context *ctx,
shProg->data->UniformStorage = NULL;
}
- if (shProg->UniformRemapTable) {
+ if (shProg->UniformRemapTable && !shProg->data->cache_fallback) {
ralloc_free(shProg->UniformRemapTable);
shProg->NumUniformRemapTable = 0;
shProg->UniformRemapTable = NULL;