<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>