[Mesa-dev] [Bug 109532] ir_variable has maximum access out of bounds -- but it's not out of bounds

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Feb 27 16:37:30 UTC 2019


--- Comment #49 from Ian Romanick <idr at freedesktop.org> ---
After discussing https://github.com/KhronosGroup/OpenGL-API/issues/46 in the
Khronos call today, I realized that my thinking about this bug may have been
slightly incorrect.  I believe that there are two separate issues here.

1. The issue with the array type and the maximum index.

2. The way the bindings are assigned to the elements that are used.

No matter what happens, if the shader says

   layout(packed, binding = 3) buffer Block
           float b[1];
   } block[4];

Then the thing accessed in the shader as block[2].b[0] **must** be at binding
point 5 (from the API).  The user as explicitly set that to binding 5 by the
declaration in the shader, so we absolutely have to respect that.  Had the
application not explicitly set the bindings, I think we would be free to assign
whatever values we wanted.  I believe that means the bindings set by the CTS in
the problematic test are correct.

I think we also cannot reuse the intermediate bindings.  The app may have
expectations that those bindings are for elements of block, and it may blindly
bind buffers to those bindings.  If those bindings are used for other things,
only problems can result.  I think this means we effectively cannot eliminate
array elements from buffer block arrays that have explicit bindings.  85% sure,

You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190227/0fdc576b/attachment.html>

More information about the mesa-dev mailing list