summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/compiler/glsl/gl_nir_lower_samplers_as_deref.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c b/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c
index cd7e8e39fc9..c8f17ef9aaa 100644
--- a/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c
+++ b/src/compiler/glsl/gl_nir_lower_samplers_as_deref.c
@@ -147,16 +147,18 @@ lower_deref(nir_builder *b, struct lower_samplers_as_deref_state *state,
remove_struct_derefs_prep(path.path, &name, &location, &type);
- if (state->shader_program) {
+ if (state->shader_program && var->data.how_declared != nir_var_hidden) {
/* For GLSL programs, look up the bindings in the uniform storage. */
assert(location < state->shader_program->data->NumUniformStorage &&
state->shader_program->data->UniformStorage[location].opaque[stage].active);
binding = state->shader_program->data->UniformStorage[location].opaque[stage].index;
} else {
- /* For ARB programs or built-in shaders, assume that whoever created
- * the shader set the bindings correctly already.
+ /* For ARB programs, built-in shaders, or internally generated sampler
+ * variables in GLSL programs, assume that whoever created the shader
+ * set the bindings correctly already.
*/
+ assert(var->data.explicit_binding);
binding = var->data.binding;
}