Looks right to me. I guess we have no piglit tests for it, I ran the CTS a few times on radeonsi but I was more focused on getting piglit working.

Reviewed-by: Timothy Arceri <[email protected]>

On 12/06/18 04:56, Rob Clark wrote:
We can have arrays of images or samplers.  But I forgot to handle that
case long ago.  Suprised no one complained yet.

Signed-off-by: Rob Clark <[email protected]>
---
  src/mesa/state_tracker/st_glsl_to_nir.cpp | 16 +++++++++-------
  1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index c8c2ef6cffd..3fc04c7b8b7 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -272,12 +272,15 @@ st_nir_assign_uniform_locations(struct gl_context *ctx,
            uniform->interface_type != NULL)
           continue;
- if (!uniform->data.bindless &&
-          (uniform->type->is_sampler() || uniform->type->is_image())) {
-         if (uniform->type->is_sampler())
-            loc = shaderidx++;
-         else
-            loc = imageidx++;
+      const struct glsl_type *type = glsl_without_array(uniform->type);
+      if (!uniform->data.bindless && (type->is_sampler() || type->is_image())) 
{
+         if (type->is_sampler()) {
+            loc = shaderidx;
+            shaderidx += type_size(uniform->type);
+         } else {
+            loc = imageidx;
+            imageidx += type_size(uniform->type);
+         }
        } else if (strncmp(uniform->name, "gl_", 3) == 0) {
           const gl_state_index16 *const stateTokens = 
uniform->state_slots[0].tokens;
           /* This state reference has already been setup by ir_to_mesa, but 
we'll
@@ -285,7 +288,6 @@ st_nir_assign_uniform_locations(struct gl_context *ctx,
            */
unsigned comps;
-         const struct glsl_type *type = glsl_without_array(uniform->type);
           if (glsl_type_is_struct(type)) {
              comps = 4;
           } else {

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to