Re: [Piglit] [PATCH v4] unsized_array_member: It should expect link success instead of link error
On 06/25/2018 08:57 AM, Dylan Baker wrote: > 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 . 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? Not until we get clarity on the issue from Khronos. I'll update the bug as soon as I know anything. Hopefully I can bring it up in the meeting this week. > Dylan signature.asc Description: OpenPGP digital signature ___ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit
Re: [Piglit] [PATCH v4] unsized_array_member: It should expect link success instead of link error
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 . 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 signature.asc Description: signature ___ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit
[Piglit] [PATCH v4] unsized_array_member: It should expect link success instead of link error
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 . 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 ___ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit