[Piglit] [PATCH v4] unsized_array_member: It should expect link success instead of link error
Dylan Baker
dylan at pnwbakers.com
Mon Jun 25 15:57:04 UTC 2018
Quoting Eleni Maria Stea (2018-06-23 01:43:52)
> Modified the unsized_array_member.shader_test to expect successful
> linking instead of linker error.
>
> Section 4.2 (Scoping) of the OpenGL Shading Language Specification says:
> "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)."
>
> This means that the unused array s of the following shader block in the
> unsized_array_member.shader_test:
> buffer a {
> vec4 s[];
> vec4 a[];
> } b;
> should be an array of size 1 and not an unsized array, and so no linker
> error should be generated.
>
> Ref: https://bugs.freedesktop.org/show_bug.cgi?id=106915
>
> v2:
> - replaces the comment at the top with the relevant part of the spec
> v3:
> - fixes in the quoted part of the spec (Ian Romanick)
> v4:
> - updates the commit message accordingly (Dylan Baker)
> ---
> .../linker/unsized_array_member.shader_test | 20 ++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/tests/spec/arb_shader_storage_buffer_object/linker/unsized_array_member.shader_test b/tests/spec/arb_shader_storage_buffer_object/linker/unsized_array_member.shader_test
> index 47d0483ac..946bf1cb2 100644
> --- a/tests/spec/arb_shader_storage_buffer_object/linker/unsized_array_member.shader_test
> +++ b/tests/spec/arb_shader_storage_buffer_object/linker/unsized_array_member.shader_test
> @@ -1,12 +1,14 @@
> -# From ARB_program_interface_query spec:
> +# Section 4.2 (Scoping) of the OpenGL Shading Language Specification says:
> #
> -# "For the property of BUFFER_DATA_SIZE, then the implementation-dependent
> -# minimum total buffer object size, in basic machine units, required to
> -# hold all active variables associated with an active uniform block, shader
> -# storage block, or atomic counter buffer is written to <params>. If the
> -# final member of an active shader storage block is array with no declared
> -# size, the minimum buffer size is computed assuming the array was declared
> -# as an array with one element."
> +# "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)."
>
> [require]
> GLSL >= 1.50
> @@ -31,4 +33,4 @@ void main(void) {
> }
>
> [test]
> -link error
> +link success
> --
> 2.17.1
>
This looks good to me, Ian?
Dylan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/piglit/attachments/20180625/7a840b5c/attachment.sig>
More information about the Piglit
mailing list