summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-04-02 11:06:39 +1100
committerTimothy Arceri <[email protected]>2016-04-02 17:10:56 +1100
commit0163881528c8ee650ceb9e3fd932876481a41f37 (patch)
tree5e0b2c82812e1e18095edecb7dfc1bab9319f24a
parent94ed482c19916ddede91c3c2ea3a538039ddb489 (diff)
glsl: only set buffer block binding once during initialisation
Since 8683d54d2be825 there is now a single instance of the buffer block information that needs to be updated rather than one instance for each stage. Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/compiler/glsl/link_uniform_initializers.cpp32
1 files changed, 6 insertions, 26 deletions
diff --git a/src/compiler/glsl/link_uniform_initializers.cpp b/src/compiler/glsl/link_uniform_initializers.cpp
index 870bc5bfebd..e5edf2e72e4 100644
--- a/src/compiler/glsl/link_uniform_initializers.cpp
+++ b/src/compiler/glsl/link_uniform_initializers.cpp
@@ -44,18 +44,6 @@ get_storage(gl_uniform_storage *storage, unsigned num_storage,
return NULL;
}
-static unsigned
-get_uniform_block_index(const gl_shader_program *shProg,
- const char *uniformBlockName)
-{
- for (unsigned i = 0; i < shProg->NumBufferInterfaceBlocks; i++) {
- if (!strcmp(shProg->BufferInterfaceBlocks[i].Name, uniformBlockName))
- return i;
- }
-
- return GL_INVALID_INDEX;
-}
-
void
copy_constant_to_storage(union gl_constant_value *storage,
const ir_constant *val,
@@ -168,22 +156,14 @@ set_opaque_binding(void *mem_ctx, gl_shader_program *prog,
void
set_block_binding(gl_shader_program *prog, const char *block_name, int binding)
{
- const unsigned block_index = get_uniform_block_index(prog, block_name);
-
- if (block_index == GL_INVALID_INDEX) {
- assert(block_index != GL_INVALID_INDEX);
- return;
+ for (unsigned i = 0; i < prog->NumBufferInterfaceBlocks; i++) {
+ if (!strcmp(prog->BufferInterfaceBlocks[i].Name, block_name)) {
+ prog->BufferInterfaceBlocks[i].Binding = binding;
+ return;
+ }
}
- /* This is a field of a UBO. val is the binding index. */
- for (int i = 0; i < MESA_SHADER_STAGES; i++) {
- int stage_index = prog->InterfaceBlockStageIndex[i][block_index];
-
- if (stage_index != -1) {
- struct gl_shader *sh = prog->_LinkedShaders[i];
- sh->BufferInterfaceBlocks[stage_index]->Binding = binding;
- }
- }
+ unreachable("Failed to initialize block binding");
}
void