[Piglit] [PATCH V2 2/2] glsl-1.50: Add shader tests to verify gl_FragCoord redeclarations

Anuj Phogat anuj.phogat at gmail.com
Fri May 16 16:07:20 PDT 2014


These patches are getting very old. I'll soon push them upstream unless
I hear otherwise.

On Thu, Mar 6, 2014 at 4:11 PM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> V2: Add few more shader tests and do minor changes in tests added in V1.
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
>  ...ayout-qualifiers-conflicting-case-5.shader_test | 62 ++++++++++++++++++++++
>  ...ayout-qualifiers-conflicting-case-6.shader_test | 61 +++++++++++++++++++++
>  ...ayout-qualifiers-conflicting-case-7.shader_test | 50 +++++++++++++++++
>  ...ayout-qualifiers-conflicting-case-8.shader_test | 61 +++++++++++++++++++++
>  ...ayout-qualifiers-conflicting-case-9.shader_test | 49 +++++++++++++++++
>  5 files changed, 283 insertions(+)
>  create mode 100644 tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-5.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-6.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-7.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-8.shader_test
>  create mode 100644 tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-9.shader_test
>
> diff --git a/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-5.shader_test b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-5.shader_test
> new file mode 100644
> index 0000000..d06c7d9
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-5.shader_test
> @@ -0,0 +1,62 @@
> +/* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:
> + *
> + *     "Fragment shaders can have an input layout only for redeclaring the
> + *     built-in variable gl_FragCoord (see section 7.2 Fragment Shader
> + *     Special Variables). The layout qualifier identifiers for
> + *     gl_FragCoord are
> + *
> + *     layout-qualifier-id:
> + *         origin_upper_left
> + *         pixel_center_integer"
> + *
> + *
> + *     "If gl_FragCoord is redeclared in any fragment shader in a program,
> + *      it must be redeclared in all the fragment shaders in that program
> + *      that have a static use gl_FragCoord. All redeclarations of
> + *      gl_FragCoord in all fragment shaders in a single program must have
> + *      the same set of qualifiers."
> + *
> + * Tests the case when only the fragment shaders which don't use gl_FragCoord,
> + * redeclare it with matching layout qualifiers. GLSL 1.50 expects the
> + * redeclarations in all the fragment shaders to match. The order of fragment
> + * shaders is important here.
> + */
> +[require]
> +GLSL >= 1.50
> +
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +
> +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void blue()
> +{
> +     fragcolor.b = 1.0;
> +}
> +
> +[fragment shader]
> +
> +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha()
> +{
> +     fragcolor.a = 1.0;
> +}
> +
> +[fragment shader]
> +
> +layout(pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha();
> +void blue();
> +void main()
> +{
> +     fragcolor = vec4(gl_FragCoord.xy, 0.0, 1.0);
> +     blue();
> +     alpha();
> +}
> +
> +[test]
> +link error
> diff --git a/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-6.shader_test b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-6.shader_test
> new file mode 100644
> index 0000000..24884d5
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-6.shader_test
> @@ -0,0 +1,61 @@
> +/* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:
> + *
> + *     "Fragment shaders can have an input layout only for redeclaring the
> + *     built-in variable gl_FragCoord (see section 7.2 Fragment Shader
> + *     Special Variables). The layout qualifier identifiers for
> + *     gl_FragCoord are
> + *
> + *     layout-qualifier-id:
> + *         origin_upper_left
> + *         pixel_center_integer"
> + *
> + *
> + *     "If gl_FragCoord is redeclared in any fragment shader in a program,
> + *      it must be redeclared in all the fragment shaders in that program
> + *      that have a static use gl_FragCoord. All redeclarations of
> + *      gl_FragCoord in all fragment shaders in a single program must have
> + *      the same set of qualifiers."
> + *
> + * Tests the case when only the fragment shaders which don't use gl_FragCoord,
> + * redeclare it with conflicting layout qualifiers. GLSL 1.50 expects the
> + * redeclarations in all the fragment shaders to match.
> + */
> +[require]
> +GLSL >= 1.50
> +
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +
> +layout(pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha();
> +void blue();
> +void main()
> +{
> +     fragcolor = vec4(gl_FragCoord.xy, 0.0, 1.0);
> +     blue();
> +     alpha();
> +}
> +
> +[fragment shader]
> +
> +layout(pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha()
> +{
> +     fragcolor.a = gl_FragCoord.z;
> +}
> +
> +[fragment shader]
> +
> +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void blue()
> +{
> +     fragcolor.b = 1.0;
> +}
> +
> +[test]
> +link error
> diff --git a/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-7.shader_test b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-7.shader_test
> new file mode 100644
> index 0000000..259e095
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-7.shader_test
> @@ -0,0 +1,50 @@
> +/* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:
> + *
> + *     "Fragment shaders can have an input layout only for redeclaring the
> + *     built-in variable gl_FragCoord (see section 7.2 Fragment Shader
> + *     Special Variables). The layout qualifier identifiers for
> + *     gl_FragCoord are
> + *
> + *     layout-qualifier-id:
> + *         origin_upper_left
> + *         pixel_center_integer"
> + *
> + *
> + *     "If gl_FragCoord is redeclared in any fragment shader in a program,
> + *      it must be redeclared in all the fragment shaders in that program
> + *      that have a static use gl_FragCoord. All redeclarations of
> + *      gl_FragCoord in all fragment shaders in a single program must have
> + *      the same set of qualifiers."
> + *
> + * Tests the case when one fragment shader redeclares gl_FragCoord without
> + * any qualifiers and other one has missing redeclaration. Spec is not very
> + * clear about this case but making this case fail to link would be wrong.
> + */
> +[require]
> +GLSL >= 1.50
> +
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +
> +in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha();
> +void main()
> +{
> +     fragcolor = vec4(gl_FragCoord.xyz, 1.0);
> +     alpha();
> +}
> +
> +[fragment shader]
> +
> +out vec4 fragcolor;
> +void alpha()
> +{
> +     fragcolor.a = gl_FragCoord.z;
> +}
> +
> +
> +[test]
> +link success
> diff --git a/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-8.shader_test b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-8.shader_test
> new file mode 100644
> index 0000000..5f0b6b6
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-8.shader_test
> @@ -0,0 +1,61 @@
> +/* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:
> + *
> + *     "Fragment shaders can have an input layout only for redeclaring the
> + *     built-in variable gl_FragCoord (see section 7.2 Fragment Shader
> + *     Special Variables). The layout qualifier identifiers for
> + *     gl_FragCoord are
> + *
> + *     layout-qualifier-id:
> + *         origin_upper_left
> + *         pixel_center_integer"
> + *
> + *
> + *     "If gl_FragCoord is redeclared in any fragment shader in a program,
> + *      it must be redeclared in all the fragment shaders in that program
> + *      that have a static use gl_FragCoord. All redeclarations of
> + *      gl_FragCoord in all fragment shaders in a single program must have
> + *      the same set of qualifiers."
> + *
> + * Tests the case when none of the fragment shaders use gl_FragCoord, but
> + * redeclare it with conflicting layout qualifiers. GLSL 1.50 expects the
> + * redeclarations in all the fragment shaders to match.
> + */
> +[require]
> +GLSL >= 1.50
> +
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +
> +layout(pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha();
> +void blue();
> +void main()
> +{
> +     fragcolor.rg = vec2(0.0 , 1.0);
> +     blue();
> +     alpha();
> +}
> +
> +[fragment shader]
> +
> +layout(pixel_center_integer) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha()
> +{
> +     fragcolor.a = 1.0;
> +}
> +
> +[fragment shader]
> +
> +layout(origin_upper_left) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void blue()
> +{
> +     fragcolor.b = 0.0;
> +}
> +
> +[test]
> +link error
> diff --git a/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-9.shader_test b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-9.shader_test
> new file mode 100644
> index 0000000..76ebd3c
> --- /dev/null
> +++ b/tests/spec/glsl-1.50/execution/fragcoord-layout-qualifiers-conflicting-case-9.shader_test
> @@ -0,0 +1,49 @@
> +/* Section 4.3.8.1 (Input Layout Qualifiers) of the GLSL 1.50 spec says:
> + *
> + *     "Fragment shaders can have an input layout only for redeclaring the
> + *     built-in variable gl_FragCoord (see section 7.2 Fragment Shader
> + *     Special Variables). The layout qualifier identifiers for
> + *     gl_FragCoord are
> + *
> + *     layout-qualifier-id:
> + *         origin_upper_left
> + *         pixel_center_integer"
> + *
> + *
> + *     "If gl_FragCoord is redeclared in any fragment shader in a program,
> + *      it must be redeclared in all the fragment shaders in that program
> + *      that have a static use gl_FragCoord. All redeclarations of
> + *      gl_FragCoord in all fragment shaders in a single program must have
> + *      the same set of qualifiers."
> + *
> + * Tests the case when one fragment shader redeclares gl_FragCoord but doesn't
> + * use it and other one has missing redeclaration.
> + */
> +[require]
> +GLSL >= 1.50
> +
> +
> +[vertex shader passthrough]
> +
> +[fragment shader]
> +
> +layout(origin_upper_left) in vec4 gl_FragCoord;
> +out vec4 fragcolor;
> +void alpha()
> +{
> +     fragcolor.a = 1.0;
> +}
> +
> +[fragment shader]
> +
> +out vec4 fragcolor;
> +void alpha();
> +void main()
> +{
> +     fragcolor = vec4(gl_FragCoord.xyz, 1.0);
> +     alpha();
> +}
> +
> +
> +[test]
> +link error
> --
> 1.8.3.1
>


More information about the Piglit mailing list