https://bugs.freedesktop.org/show_bug.cgi?id=109532

--- Comment #7 from asimiklit <andrey.simik...@gmail.com> ---
(In reply to Ilia Mirkin from comment #2)
> Looks like this is happening in link_uniform_blocks. The type gets updated:
> 
>       if (b->array != NULL &&
>           (b->type->without_array()->interface_packing ==
>            GLSL_INTERFACE_PACKING_PACKED)) {
>          b->type = resize_block_array(b->type, b->array);
>          b->var->type = b->type;
>       }
> 
> But no change to the corresponding max_data_access. However doing the naive
> thing here didn't help -- the shader fails. I didn't investigate why. I
> think create_buffer_blocks also needs to be involved somehow.

Thanks a lot your message was very helpful to find the start point of
investigation.

Looks like this thing is helped:

---
 src/compiler/glsl/link_uniform_blocks.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/compiler/glsl/link_uniform_blocks.cpp
b/src/compiler/glsl/link_uniform_blocks.cpp
index 0b890586298..5197870a6d9 100644
--- a/src/compiler/glsl/link_uniform_blocks.cpp
+++ b/src/compiler/glsl/link_uniform_blocks.cpp
@@ -438,8 +438,15 @@ link_uniform_blocks(void *mem_ctx,
       if (b->array != NULL &&
           (b->type->without_array()->interface_packing ==
            GLSL_INTERFACE_PACKING_PACKED)) {
+         const int new_max_array_access = (int)(b->array->num_array_elements -
1);
          b->type = resize_block_array(b->type, b->array);
          b->var->type = b->type;
+
+         assert(((int)b->array->array_elements[new_max_array_access] ==
+                b->var->data.max_array_access ||
+                b->var->data.max_array_access == -1) && "Is last index is
proper");
+
+         b->var->data.max_array_access = new_max_array_access;
       }

       block_size.num_active_uniforms = 0;
-- 
2.17.1

Did you mean the same thing saying "naive thing" or this change helps?

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to