diff options
Diffstat (limited to 'src/glsl')
-rw-r--r-- | src/glsl/ast_to_hir.cpp | 1 | ||||
-rw-r--r-- | src/glsl/link_uniforms.cpp | 8 |
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; |