On Wed, Apr 26, 2017 at 9:40 AM, Nicolai Hähnle <nhaeh...@gmail.com> wrote: > On 24.04.2017 12:35, Samuel Pitoiset wrote: >> >> 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.pitoi...@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; >> + } > > > I don't think this is correct. The way I understand the spec, saying > > layout (bindless_sampler, binding = 5) uniform sampler2D s; > > means that s is still bindless, it's just that it's *initial* value is set > up as if the application had called > > glUniform1i(index of s, 5); > > You're still allowed to later on change it to a bindless handle by calling > one of the glUniformHandleui64* functions.
I don't like this. Are you suggesting that a texture bound to unit 5 has to be somehow converted to a bindless texture and made resident under the hood (in Mesa), so that the bindless shader code works? Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev