<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - [GLSL] Unused arrays declared without a size should be handled like arrays of size 1."
href="https://bugs.freedesktop.org/show_bug.cgi?id=106915#c1">Comment # 1</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - [GLSL] Unused arrays declared without a size should be handled like arrays of size 1."
href="https://bugs.freedesktop.org/show_bug.cgi?id=106915">bug 106915</a>
from <span class="vcard"><a class="email" href="mailto:idr@freedesktop.org" title="Ian Romanick <idr@freedesktop.org>"> <span class="fn">Ian Romanick</span></a>
</span></b>
<pre>(In reply to Eleni Maria Stea from <a href="show_bug.cgi?id=106915#c0">comment #0</a>)
<span class="quote">> From GLSLang Spec 4.60 Section 4.2 Scoping:</span >
Please refer to this as the "OpenGL Shading Language specification". GLSLang
is a particular implementation of the GLSL specification.
<span class="quote">> "An array implicitly sized in one shader can be explicitly sized by another
> shader in the same stage. If no shader in a stage has an explicit size for
> the array, the largest implicit size (one more than the largest index used)
> in that stage is used. There is no cross-stage array sizing. If there is no
> static access to an implicitly sized array within the stage declaring it,
> then the array is given a size of 1, which is relevant when the array is
> declared within an interface block that is shared with other stages or the
> application (other unused arrays might be eliminated by the optimizer)."</span >
I think we should submit a spec bug for this. There is explicit language in
the spec that says that only the last member of an SSBO may be declared without
a size. See issue #2 in the ARB_shader_storage_buffer_object spec.
<span class="quote">> According to the paragraph above, the following piglit test should not
> generate any errors as s[] would be treated as an array of size 1:
>
> [vertex shader]
> #version 150
> #extension GL_ARB_shader_storage_buffer_object: require
> buffer a {
> vec4 s[];
> vec4 a[];
> } b;
>
> in vec4 piglit_vertex;
> out vec4 c;
>
> void main(void) {
> c = b.a[0];
>
> gl_Position = piglit_vertex;
> }
>
> [test]
> link error
>
> Test:
> spec/arb_shader_storage_buffer_object/linker/unsized_array_member.shader_test
>
> but it does.
>
> If we convert the GLSL code to SPIR-V there are no linker errors anymore
> since s[] seems to have type: OpTypeArray with size 1 and the linker accepts
> it.</span ></pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>