[Piglit] [PATCH V6] arb_fragment_coord_conventions compiler/parser

Ian Romanick idr at freedesktop.org
Fri Aug 16 10:53:36 PDT 2013


On 08/16/2013 10:49 AM, Ian Romanick wrote:
> On 08/16/2013 10:09 AM, Steve Miller wrote:
>> Compiler test for layout qualifiers and redeclaration of gl_FragCoord.
>>
>> v2 : typecast data to fragcolor as vec4 (was error in original)
>> v3 : added entry to all.tests for compiler directory
>>     : compiler tests now require gl110 and extension. piglit passes
>> v4 : comment consistency, quote change, frag swizzle
>> v5 : renamed two tests for illegal usage -01-PointCoord and
>> -02-FrontFacing
>>     : added test for redeclaration on vertex input
>>     : added test for redeclaration on uniform value in FS
>> v6 : created user defined varying redeclaration test
>
> I also just noticed the "Dependencies on ARB_fragment_program extension"
> section of the spec.  We'll need some follow-on tests for that... I
> don't think this was ever implemented. :(
>
> Anyway, these tests are
>
> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

One last thing... before these get committed, the commit log should be 
updated to point out that all of the tests except 
redeclaration-after-use.frag pass on Mesa.  It would also be good to 
know the pass rate on other implementations.  I can try NVIDIA.  Perhaps 
Ken could try AMD...

>> ---
>>   tests/all.tests                                    |  3 ++
>>   .../basic-qualifiers-both-origin-and-pixel.frag    | 31
>> +++++++++++++++++++
>>   ...ic-qualifiers-layout-illegal-01-PointCoord.frag | 33
>> ++++++++++++++++++++
>>   ...c-qualifiers-layout-illegal-02-FrontFacing.frag | 33
>> ++++++++++++++++++++
>>   .../compiler/basic-qualifiers-nothing.frag         | 34
>> ++++++++++++++++++++
>>   .../compiler/basic-qualifiers-origin.frag          | 31
>> +++++++++++++++++++
>>   .../compiler/basic-qualifiers-pixel-center.frag    | 31
>> +++++++++++++++++++
>>   .../compiler/redeclaration-after-use.frag          | 28
>> +++++++++++++++++
>>   .../compiler/redeclaration-outside-fs.vert         | 36
>> ++++++++++++++++++++++
>>   ...redeclaration-qualifier-applied-to-uniform.frag | 34
>> ++++++++++++++++++++
>>   ...laration-qualifier-applied-to-vertex-input.vert | 34
>> ++++++++++++++++++++
>>   .../redeclaration-user-defined-varying.frag        | 34
>> ++++++++++++++++++++
>>   12 files changed, 362 insertions(+)
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-01-PointCoord.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-02-FrontFacing.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-uniform.frag
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-vertex-input.vert
>>
>>   create mode 100644
>> tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-user-defined-varying.frag
>>
>>
>> diff --git a/tests/all.tests b/tests/all.tests
>> index 8766572..8342911 100644
>> --- a/tests/all.tests
>> +++ b/tests/all.tests
>> @@ -1093,6 +1093,9 @@ arb_fragment_coord_conventions = Group()
>>   spec['ARB_fragment_coord_conventions'] = arb_fragment_coord_conventions
>>   add_vpfpgeneric(arb_fragment_coord_conventions,
>> 'fp-arb-fragment-coord-conventions-none')
>>   add_vpfpgeneric(arb_fragment_coord_conventions,
>> 'fp-arb-fragment-coord-conventions-integer')
>> +import_glsl_parser_tests(arb_fragment_coord_conventions,
>> +             os.path.join(testsDir, 'spec',
>> +              'arb_fragment_coord_conventions'), ['compiler'])
>>
>>   ati_fragment_shader = Group()
>>   spec['ATI_fragment_shader'] = ati_fragment_shader
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag
>>
>> new file mode 100644
>> index 0000000..216da13
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-both-origin-and-pixel.frag
>>
>> @@ -0,0 +1,31 @@
>> +/* [config]
>> + * expect_result: pass
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left, pixel_center_integer) in vec4 gl_FragCoord;
>> +
>> +void main()
>> +{
>> +     gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-01-PointCoord.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-01-PointCoord.frag
>>
>> new file mode 100644
>> index 0000000..b5358eb
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-01-PointCoord.frag
>>
>> @@ -0,0 +1,33 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + *
>> + * Test should fail because input layout should only apply to
>> gl_FragCoord.
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left, pixel_center_integer) in vec2 gl_PointCoord;
>> +
>> +void main()
>> +{
>> +     gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-02-FrontFacing.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-02-FrontFacing.frag
>>
>> new file mode 100644
>> index 0000000..2e87c56
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-layout-illegal-02-FrontFacing.frag
>>
>> @@ -0,0 +1,33 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer
>> + *
>> + * Test should fail because input layout should only apply to
>> gl_FragCoord.
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left, pixel_center_integer) in bool gl_FrontFacing;
>> +
>> +void main()
>> +{
>> +    gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag
>>
>> new file mode 100644
>> index 0000000..4055dfe
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-nothing.frag
>>
>> @@ -0,0 +1,34 @@
>> +/* [config]
>> + * expect_result: pass
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + *     ...
>> + *     Redeclarations are done as follows
>> + *         in vec4 gl_FragCoord; // redeclaration that changes
>> nothing is allowed
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +in vec4 gl_FragCoord;
>> +
>> +void main()
>> +{
>> +    gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag
>>
>> new file mode 100644
>> index 0000000..c09ca9b
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-origin.frag
>>
>> @@ -0,0 +1,31 @@
>> +/* [config]
>> + * expect_result: pass
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left) in vec4 gl_FragCoord;
>> +
>> +void main()
>> +{
>> +    gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag
>>
>> new file mode 100644
>> index 0000000..f7b1a37
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/basic-qualifiers-pixel-center.frag
>>
>> @@ -0,0 +1,31 @@
>> +/* [config]
>> + * expect_result: pass
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(pixel_center_integer) in vec4 gl_FragCoord;
>> +
>> +void main()
>> +{
>> +    gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag
>>
>> new file mode 100644
>> index 0000000..f9e67c1
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-after-use.frag
>>
>> @@ -0,0 +1,28 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Within any shader, the first redeclarations of gl_FragCoord
>> must appear
>> + *     before any use of gl_FragCoord."
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +vec2 a = gl_FragCoord.xy;
>> +
>> +in vec4 gl_FragCoord; //redeclaration after use should be illegal
>> +
>> +void main()
>> +{
>> +    gl_FragColor = gl_FragCoord.xyzz;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert
>>
>> new file mode 100644
>> index 0000000..9550db7
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-outside-fs.vert
>>
>> @@ -0,0 +1,36 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + *
>> + * This test assumes that gl_FragCoord cannot be redeclared anywhere
>> other than
>> + * a fragment shader.
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +in vec4 vertex;
>> +
>> +in vec4 gl_FragCoord; //redeclaration in a VS
>> +
>> +void main()
>> +{
>> +    gl_Position = vertex;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-uniform.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-uniform.frag
>>
>> new file mode 100644
>> index 0000000..08d3c22
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-uniform.frag
>>
>> @@ -0,0 +1,34 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + *
>> + * This test assumes that gl_FragCoord layout qualifiers cannot be
>> applied to
>> + * uniform values.
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left, pixel_center_integer)uniform vec4 a;
>> +
>> +void main()
>> +{
>> +    gl_FragColor = a.xyzw;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-vertex-input.vert
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-vertex-input.vert
>>
>> new file mode 100644
>> index 0000000..d68f11e
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-qualifier-applied-to-vertex-input.vert
>>
>> @@ -0,0 +1,34 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + *
>> + * This test assumes that gl_FragCoord layout qualifiers cannot be
>> used anywhere
>> + * other than a fragment shader.
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left) in vec4 vertex;
>> +
>> +void main()
>> +{
>> +    gl_Position = vertex;
>> +}
>> diff --git
>> a/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-user-defined-varying.frag
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-user-defined-varying.frag
>>
>> new file mode 100644
>> index 0000000..8346f67
>> --- /dev/null
>> +++
>> b/tests/spec/arb_fragment_coord_conventions/compiler/redeclaration-user-defined-varying.frag
>>
>> @@ -0,0 +1,34 @@
>> +/* [config]
>> + * expect_result: fail
>> + * glsl_version: 1.10
>> + * require_extensions: GL_ARB_fragment_coord_conventions
>> + * check_link: false
>> + * [end config]
>> + */
>> +
>> +/*
>> + * Section 4.3.x.1 (Input Layout Qualifiers) of the
>> + * ARB_fragment_coord_conventions spec says:
>> + *
>> + *     "Fragment shaders can have an input layout only for
>> redeclaring the
>> + *     built-in variable gl_FragCoord (see section 7.2). The layout
>> qualifier
>> + *     identifiers for gl_FragCoord are
>> + *
>> + *         <layout-qualifier-id>
>> + *             origin_upper_left
>> + *             pixel_center_integer"
>> + *
>> + * This test assumes that gl_FragCoord layout qualifiers cannot be
>> applied to
>> + * user defined varyings.
>> + */
>> +
>> +#version 110
>> +
>> +#extension GL_ARB_fragment_coord_conventions : require
>> +
>> +layout(origin_upper_left, pixel_center_integer)in vec4 a;
>> +
>> +void main()
>> +{
>> +    gl_FragColor = a.xyzw;
>> +}
>>
>



More information about the Piglit mailing list