[Mesa-dev] [PATCH v2 19/31] glsl: fix explicit binding location for bindless samplers/images
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Apr 24 10:35:50 UTC 2017
The ARB_bindless_texture spec says:
"Interactions with GLSL 4.20"
"Without GLSL 4.20 support, sampler and image uniforms may only
be initialized through the OpenGL API. With GLSL 4.20, sampler
and image uniforms may be initialized in the shader using
layout(binding = integer-constant)
as described in section 4.4.4 "Opaque-Uniform Layout Qualifiers".
When ARB_bindless_texture is supported, these initial binding
values are always taken to mean a texture image or image unit
number, not a bindless handle."
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
src/compiler/glsl/ast_to_hir.cpp | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index ae81ed95d8..943c25a224 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -2920,6 +2920,26 @@ apply_explicit_binding(struct _mesa_glsl_parse_state *state,
return;
}
+ /* The ARB_bindless_texture_spec says:
+ *
+ * "Interactions with GLSL 4.20"
+ *
+ * "Without GLSL 4.20 support, sampler and image uniforms may only be
+ * initialized through the OpenGL API. With GLSL 4.20, sampler and image
+ * uniforms may be initialized in the shader using
+ *
+ * layout(binding = integer-constant)
+ *
+ * as described in section 4.4.4 "Opaque-Uniform Layout Qualifiers". When
+ * ARB_bindless_texture is supported, these initial binding values are
+ * always taken to mean a texture image or image unit number, not a
+ * bindless handle."
+ */
+ if (state->has_bindless() &&
+ (base_type->is_sampler() || base_type->is_image())) {
+ var->data.bindless = false;
+ }
+
var->data.explicit_binding = true;
var->data.binding = qual_binding;
--
2.12.2
More information about the mesa-dev
mailing list