diff options
-rw-r--r-- | src/glsl/link_uniform_initializers.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/glsl/link_uniform_initializers.cpp b/src/glsl/link_uniform_initializers.cpp index 1b7609a4725..3f667104759 100644 --- a/src/glsl/link_uniform_initializers.cpp +++ b/src/glsl/link_uniform_initializers.cpp @@ -116,6 +116,16 @@ set_uniform_binding(void *mem_ctx, gl_shader_program *prog, } } } + } else if (storage->block_index != -1) { + /* This is a field of a UBO. val is the binding index. */ + for (int i = 0; i < MESA_SHADER_TYPES; i++) { + int stage_index = prog->UniformBlockStageIndex[i][storage->block_index]; + + if (stage_index != -1) { + struct gl_shader *sh = prog->_LinkedShaders[i]; + sh->UniformBlocks[stage_index].Binding = binding; + } + } } storage->initialized = true; |