[Mesa-dev] [Bug 106915] [GLSL] Unused arrays declared without a size should be handled like arrays of size 1.

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Jun 16 01:01:33 UTC 2018


--- Comment #1 from Ian Romanick <idr at freedesktop.org> ---
(In reply to Eleni Maria Stea from comment #0)
> From GLSLang Spec 4.60 Section 4.2 Scoping:

Please refer to this as the "OpenGL Shading Language specification".  GLSLang
is a particular implementation of the GLSL specification.

> "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)."

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.

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

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

More information about the mesa-dev mailing list