summaryrefslogtreecommitdiffstats
path: root/src/glsl
diff options
context:
space:
mode:
Diffstat (limited to 'src/glsl')
-rw-r--r--src/glsl/ast_to_hir.cpp1
-rw-r--r--src/glsl/link_uniforms.cpp8
2 files changed, 8 insertions, 1 deletions
diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index 80dd86e7803..bf4130fa8c6 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -4322,6 +4322,7 @@ ast_uniform_block::hir(exec_list *instructions,
&ubo->Uniforms[ubo->NumUniforms++];
ubo_var->Name = ralloc_strdup(state->uniform_blocks, fields[i].name);
+ ubo_var->IndexName = ubo_var->Name;
ubo_var->Type = fields[i].type;
ubo_var->Offset = 0; /* Assigned at link time. */
ubo_var->RowMajor = fields[i].row_major;
diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
index 531efa4a39f..68cafbf3946 100644
--- a/src/glsl/link_uniforms.cpp
+++ b/src/glsl/link_uniforms.cpp
@@ -510,7 +510,13 @@ link_cross_validate_uniform_block(void *mem_ctx,
struct gl_uniform_buffer_variable *ubo_var =
&linked_block->Uniforms[i];
- ubo_var->Name = ralloc_strdup(*linked_blocks, ubo_var->Name);
+ if (ubo_var->Name == ubo_var->IndexName) {
+ ubo_var->Name = ralloc_strdup(*linked_blocks, ubo_var->Name);
+ ubo_var->IndexName = ubo_var->Name;
+ } else {
+ ubo_var->Name = ralloc_strdup(*linked_blocks, ubo_var->Name);
+ ubo_var->IndexName = ralloc_strdup(*linked_blocks, ubo_var->IndexName);
+ }
}
return linked_block_index;