Mesa (staging/19.2): glsl: fix crash compiling bindless samplers inside unnamed UBOs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 14 18:17:40 UTC 2019


Module: Mesa
Branch: staging/19.2
Commit: 6f30614d73f00eeb34f90a6b055489f06bfd924d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=6f30614d73f00eeb34f90a6b055489f06bfd924d

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri Oct 11 16:23:48 2019 +1100

glsl: fix crash compiling bindless samplers inside unnamed UBOs

The check to see if we were dealing with a buffer block was
too late and only worked for named UBOs.

Fixes: f32b01ca435c "glsl/linker: remove ubo explicit binding handling"

Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1900
(cherry picked from commit 1294f01e061d9490fa97c35f03ef845e06fd14ab)

---

 src/compiler/glsl/link_uniform_initializers.cpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/compiler/glsl/link_uniform_initializers.cpp b/src/compiler/glsl/link_uniform_initializers.cpp
index 61b324592df..076ff5cea30 100644
--- a/src/compiler/glsl/link_uniform_initializers.cpp
+++ b/src/compiler/glsl/link_uniform_initializers.cpp
@@ -283,15 +283,15 @@ link_set_uniform_initializers(struct gl_shader_program *prog,
          if (var->data.explicit_binding) {
             const glsl_type *const type = var->type;
 
-            if (type->without_array()->is_sampler() ||
+            if (var->is_in_buffer_block()) {
+               /* This case is handled by link_uniform_blocks (at
+                * process_block_array_leaf)
+                */
+            } else if (type->without_array()->is_sampler() ||
                 type->without_array()->is_image()) {
                int binding = var->data.binding;
                linker::set_opaque_binding(mem_ctx, prog, var, var->type,
                                           var->name, &binding);
-            } else if (var->is_in_buffer_block()) {
-               /* This case is handled by link_uniform_blocks (at
-                * process_block_array_leaf)
-                */
             } else if (type->contains_atomic()) {
                /* we don't actually need to do anything. */
             } else {




More information about the mesa-commit mailing list