Mesa (10.1): linker: Fold set_uniform_binding into call site
Carl Worth
cworth at kemper.freedesktop.org
Fri Apr 18 23:11:14 UTC 2014
Module: Mesa
Branch: 10.1
Commit: 23e42eeab07847bf073edeec304121361c648e96
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=23e42eeab07847bf073edeec304121361c648e96
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Fri Apr 4 11:08:00 2014 -0700
linker: Fold set_uniform_binding into call site
In the next patch, we'll see that using
gl_shader_program::UniformStorage is not correct for uniform blocks.
That means we can't use ::UniformStorage to select between the sampler
path and the block path. Instead we want to just use the type of the
variable. That's never passed to set_uniform_binding, and it's easier
to just remove the function (especially for later patches in the series)
than to add another parameter.
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76323
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Cc: "10.1" <mesa-stable at lists.freedesktop.org>
Cc: github at socker.lepus.uberspace.de
(cherry picked from commit 943b2d52bf5df6adde3c0abcb91d9a3899476ab0)
---
src/glsl/link_uniform_initializers.cpp | 33 ++++++++++++--------------------
1 file changed, 12 insertions(+), 21 deletions(-)
diff --git a/src/glsl/link_uniform_initializers.cpp b/src/glsl/link_uniform_initializers.cpp
index 57edc3e..cd2307b 100644
--- a/src/glsl/link_uniform_initializers.cpp
+++ b/src/glsl/link_uniform_initializers.cpp
@@ -150,25 +150,6 @@ set_block_binding(void *mem_ctx, gl_shader_program *prog,
}
void
-set_uniform_binding(void *mem_ctx, gl_shader_program *prog,
- const char *name, const glsl_type *type, int binding)
-{
- struct gl_uniform_storage *const storage =
- get_storage(prog->UniformStorage, prog->NumUserUniformStorage, name);
-
- if (storage == NULL) {
- assert(storage != NULL);
- return;
- }
-
- if (storage->type->is_sampler()) {
- set_sampler_binding(mem_ctx, prog, name, type, binding);
- } else if (storage->block_index != -1) {
- set_block_binding(mem_ctx, prog, name, type, binding);
- }
-}
-
-void
set_uniform_initializer(void *mem_ctx, gl_shader_program *prog,
const char *name, const glsl_type *type,
ir_constant *val)
@@ -267,8 +248,18 @@ link_set_uniform_initializers(struct gl_shader_program *prog)
mem_ctx = ralloc_context(NULL);
if (var->data.explicit_binding) {
- linker::set_uniform_binding(mem_ctx, prog, var->name,
- var->type, var->data.binding);
+ const glsl_type *const type = var->type;
+
+ if (type->is_sampler()
+ || (type->is_array() && type->fields.array->is_sampler())) {
+ linker::set_sampler_binding(mem_ctx, prog, var->name,
+ type, var->data.binding);
+ } else if (var->is_in_uniform_block()) {
+ linker::set_block_binding(mem_ctx, prog, var->name,
+ type, var->data.binding);
+ } else {
+ assert(!"Explicit binding not on a sampler or UBO.");
+ }
} else if (var->constant_value) {
linker::set_uniform_initializer(mem_ctx, prog, var->name,
var->type, var->constant_value);
More information about the mesa-commit
mailing list