[Piglit] [PATCH] gen_flat_interpolation_qualifier.py: Adds non-flat interpolation tests generator

Dave Airlie airlied at gmail.com
Mon Apr 18 21:15:27 UTC 2016


Acked-by: Dave Airlie <airlied at redhat.com>

On 18 April 2016 at 23:06, Andres Gomez <agomez at igalia.com> wrote:
> Hi,
>
> this patch is still unreviewed.
>
> We'd welcome some help to get this into piglit with guarantees that the
> tests added are OK :)
>
> Br.
>
> On Mon, 2016-04-04 at 20:05 +0300, Andres Gomez wrote:
>> This patch provides additional tests for the patch under review at:
>> https://lists.freedesktop.org/archives/mesa-dev/2016-April/111842.htm
>> l
>>
>> Also, this generator provides additional tests for the
>> ARB_gpu_shader_fp64 extension:
>> https://www.opengl.org/registry/specs/ARB/gpu_shader_fp64.txt
>>
>> Which has previous patches for new tests under review at:
>> https://lists.freedesktop.org/archives/piglit/2016-March/019167.html
>>
>> This work is complemented with the corresponding bug to add support
>> for this extension into the i965 shader backend at:
>> https://bugs.freedesktop.org/show_bug.cgi?id=92760
>>
>> Br.
>>
>> On Mon, 2016-04-04 at 20:00 +0300, Andres Gomez wrote:
>> >
>> > Generator for error checking on "flat" keyword.
>> >
>> > This generator adds, additionally, checks for variables inside
>> > structs
>> > and interface blocks, which weren't explicitly mentioned in the
>> > GLSL
>> > specs and, partially, in the GLSL ES specs.
>> >
>> > For a discussion about this check
>> > https://lists.freedesktop.org/archives/mesa-dev/2016-March/109117.h
>> > tm
>> > l
>> > and Khronos bug #15671.
>> >
>> > Also, removed 8 redundant tests replaced by the generator.
>> >
>> > Signed-off-by: Andres Gomez <agomez at igalia.com>
>> > ---
>> >  generated_tests/CMakeLists.txt                     |   7 +
>> >  .../gen_flat_interpolation_qualifier.py            | 170
>> > +++++++++++++++++++++
>> >  .../gen_flat_interpolation_qualifier/compiler.mako |  98
>> > ++++++++++++
>> >  .../template.frag.mako                             |  60 ++++++++
>> >  .../nonflat-int-array.frag                         |  31 ----
>> >  .../interpolation-qualifiers/nonflat-int.frag      |  26 ----
>> >  .../interpolation-qualifiers/nonflat-ivec4.frag    |  26 ----
>> >  .../interpolation-qualifiers/nonflat-uint.frag     |  26 ----
>> >  .../interpolation-qualifiers/nonflat-uvec4.frag    |  26 ----
>> >  .../nonflat-int-array.frag                         |  22 ---
>> >  .../interpolation-qualifiers/nonflat-int.frag      |  22 ---
>> >  .../interpolation-qualifiers/nonflat-ivec4.frag    |  22 ---
>> >  .../interpolation-qualifiers/nonflat-uint.frag     |  22 ---
>> >  .../interpolation-qualifiers/nonflat-uvec4.frag    |  22 ---
>> >  .../varying-struct-nonflat-int.frag                |  29 ----
>> >  .../varying-struct-nonflat-uint.frag               |  29 ----
>> >  16 files changed, 335 insertions(+), 303 deletions(-)
>> >  create mode 100644
>> > generated_tests/gen_flat_interpolation_qualifier.py
>> >  create mode 100644
>> > generated_tests/templates/gen_flat_interpolation_qualifier/compiler
>> > .m
>> > ako
>> >  create mode 100644
>> > generated_tests/templates/gen_flat_interpolation_qualifier/template
>> > .f
>> > rag.mako
>> >  delete mode 100644 tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-int-array.frag
>> >  delete mode 100644 tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-int.frag
>> >  delete mode 100644 tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-ivec4.frag
>> >  delete mode 100644 tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-uint.frag
>> >  delete mode 100644 tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-uvec4.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-int-array.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-int.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-ivec4.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-uint.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-uvec4.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/varying-struct-nonflat-int.frag
>> >  delete mode 100644 tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/varying-struct-nonflat-uint.frag
>> >
>> > diff --git a/generated_tests/CMakeLists.txt
>> > b/generated_tests/CMakeLists.txt
>> > index 569ca21..3c5b11a 100644
>> > --- a/generated_tests/CMakeLists.txt
>> > +++ b/generated_tests/CMakeLists.txt
>> > @@ -124,6 +124,12 @@ piglit_make_generated_tests(
>> >     templates/gen_inout_fp64/template.shader_test.mako
>> >     )
>> >  piglit_make_generated_tests(
>> > +   flat_interpolation_qualifier.list
>> > +   gen_flat_interpolation_qualifier.py
>> > +   templates/gen_flat_interpolation_qualifier/compiler.mako
>> > +   templates/gen_flat_interpolation_qualifier/template.frag.m
>> > ak
>> > o
>> > +   )
>> > +piglit_make_generated_tests(
>> >     shader_precision_tests.list
>> >     gen_shader_precision_tests.py
>> >     builtin_function.py
>> > @@ -181,6 +187,7 @@ add_custom_target(gen-gl-tests
>> >                     builtin_uniform_tests_fp64.list
>> >                     constant_array_size_tests_fp64.list
>> >                     inout_fp64.list
>> > +                   flat_interpolation_qualifier.list
>> >                     shader_precision_tests.list
>> >                     shader_image_load_store_tests.list
>> >                     variable_index_read_tests.list
>> > diff --git a/generated_tests/gen_flat_interpolation_qualifier.py
>> > b/generated_tests/gen_flat_interpolation_qualifier.py
>> > new file mode 100644
>> > index 0000000..2290c3b
>> > --- /dev/null
>> > +++ b/generated_tests/gen_flat_interpolation_qualifier.py
>> > @@ -0,0 +1,170 @@
>> > +# coding=utf-8
>> > +#
>> > +# Copyright © 2016 Intel Corporation
>> > +#
>> > +# Permission is hereby granted, free of charge, to any person
>> > obtaining a
>> > +# copy of this software and associated documentation files (the
>> > "Software"),
>> > +# to deal in the Software without restriction, including without
>> > limitation
>> > +# the rights to use, copy, modify, merge, publish, distribute,
>> > sublicense,
>> > +# and/or sell copies of the Software, and to permit persons to
>> > whom
>> > the
>> > +# Software is furnished to do so, subject to the following
>> > conditions:
>> > +#
>> > +# The above copyright notice and this permission notice (including
>> > the next
>> > +# paragraph) shall be included in all copies or substantial
>> > portions
>> > of the
>> > +# Software.
>> > +#
>> > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> > EXPRESS OR
>> > +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>> > MERCHANTABILITY,
>> > +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO
>> > EVENT
>> > SHALL
>> > +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
>> > DAMAGES
>> > OR OTHER
>> > +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>> > ARISING
>> > +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>> > OTHER
>> > +# DEALINGS IN THE SOFTWARE.
>> > +
>> > +"""Generate non-flat interpolation qualifier tests."""
>> > +
>> > +from __future__ import print_function, division, absolute_import
>> > +import argparse
>> > +import os
>> > +import itertools
>> > +
>> > +from templates import template_dir
>> > +from modules import utils
>> > +
>> > +TEMPLATES =
>> > template_dir(os.path.basename(os.path.splitext(__file__)[0]))
>> > +
>> > +INT_TYPES = ['int', 'ivec2', 'ivec3', 'ivec4']
>> > +
>> > +UINT_TYPES = ['uint', 'uvec2', 'uvec3', 'uvec4']
>> > +
>> > +DOUBLE_TYPES = ['double', 'dvec2', 'dvec3', 'dvec4',
>> > +                'dmat2', 'dmat2x3', 'dmat2x4',
>> > +                'dmat3x2', 'dmat3', 'dmat3x4',
>> > +                'dmat4x2', 'dmat4x3', 'dmat4']
>> > +
>> > +def get_dir_name(ver):
>> > +    """Returns the directory name to save tests given a GLSL
>> > version."""
>> > +
>> > +    assert isinstance(ver, str)
>> > +    if ver.startswith('GL_'):
>> > +        feature_dir = ver[3:].lower()
>> > +    elif ver.endswith(' es'):
>> > +        feature_dir = 'glsl-es-' + ver[0] + '.' + ver[1:3]
>> > +    else:
>> > +        feature_dir = 'glsl-' + ver[0] + '.' + ver[1:]
>> > +
>> > +    return os.path.join('spec', feature_dir, 'compiler',
>> > +                        'flat_interpolation')
>> > +
>> > +
>> > +def generate(type_name, mode, interface_block, struct, array, ver,
>> > names_only):
>> > +    """Generate GLSL parser tests."""
>> > +
>> > +    assert isinstance(type_name, str)
>> > +    assert isinstance(mode, str)
>> > +    assert isinstance(interface_block, bool)
>> > +    assert isinstance(struct, bool)
>> > +    assert isinstance(array, bool)
>> > +    assert isinstance(ver, str)
>> > +    assert isinstance(names_only, bool)
>> > +
>> > +    filename = os.path.join(
>> > +        get_dir_name(ver),
>> > +        '{0}{1}{2}{3}-{4}{5}.frag'.format(mode,
>> > +                                          '-interface_block' if
>> > interface_block else '',
>> > +                                          '-struct' if struct else
>> > '',
>> > +                                          '-array' if array else
>> > '',
>> > +                                          type_name,
>> > +                                          '-bad' if mode != 'flat'
>> > else ''))
>> > +
>> > +    print(filename)
>> > +
>> > +    if not names_only:
>> > +        with open(filename, 'w') as test_file:
>> > +            test_file.write(TEMPLATES.get_template(
>> > +                'template.frag.mako').render_unicode(
>> > +                    ver=ver,
>> > +                    mode=mode,
>> > +                    type_name=type_name,
>> > +                    interface_block=interface_block,
>> > +                    struct=struct,
>> > +                    array=array))
>> > +
>> > +
>> > +def create_tests(type_names, glsl_vers, names_only):
>> > +    """Creates combinations for flat qualifier tests."""
>> > +
>> > +    assert isinstance(type_names, list)
>> > +    assert isinstance(glsl_vers, list)
>> > +    assert isinstance(names_only, bool)
>> > +
>> > +    modes = ['flat', 'noperspective', 'smooth', 'default']
>> > +    interface_blocks = [True, False]
>> > +    structs = [True, False]
>> > +    arrays = [True, False]
>> > +    if not names_only:
>> > +        for ver in glsl_vers:
>> > +            utils.safe_makedirs(get_dir_name(ver))
>> > +
>> > +    for t_name, mode, interface_block, struct, array, ver in
>> > itertools.product(type_names,
>> > +
>> >
>> >            modes,
>> > +
>> >
>> >            interface_blocks,
>> > +
>> >
>> >            structs,
>> > +
>> >
>> >            arrays,
>> > +
>> >
>> >            glsl_vers):
>> > +        if ver.endswith(' es'):
>> > +            # There is no "noperspective" interpolation mode in
>> > GLSL
>> > ES
>> > +            if mode == 'noperspective':
>> > +                continue
>> > +            # There is no support for arrays in input structs in
>> > GLSL ES
>> > +            if struct and array:
>> > +                continue
>> > +        # Input interface blocks didn't appear in GLSL until 1.50
>> > +        if interface_block and ver == '130':
>> > +            ver = '150'
>> > +        # Input interface blocks didn't appear in GLSL ES until
>> > 3.20
>> > +        if interface_block and ver == '300 es':
>> > +            ver = '320 es'
>> > +        # Input structs weren't allowed until 1.50
>> > +        if struct and ver == '130':
>> > +            ver = '150'
>> > +        yield t_name, mode, interface_block, struct, array, ver,
>> > names_only
>> > +
>> > +
>> > +def all_tests(names_only):
>> > +    """Creates all the combinations for flat qualifier tests."""
>> > +
>> > +    assert isinstance(names_only, bool)
>> > +
>> > +    # We need additional directories for GLSL 150 and GLSL ES 320
>> > +    if not names_only:
>> > +        utils.safe_makedirs(get_dir_name('150'))
>> > +        utils.safe_makedirs(get_dir_name('320 es'))
>> > +    for test_args in (list(create_tests(INT_TYPES + UINT_TYPES,
>> > +                                        ['130', '300 es'],
>> > +                                        names_only))
>> > +                      + list(create_tests(DOUBLE_TYPES,
>> > +                                          ['GL_ARB_gpu_shader_fp64
>> > ',
>> > '400'],
>> > +                                          names_only))):
>> > +        yield test_args
>> > +
>> > +
>> > +def main():
>> > +    """Main function."""
>> > +
>> > +    parser = argparse.ArgumentParser(
>> > +        description="Generate non-flat interpolation qualifier
>> > tests
>> > with fp64 types")
>> > +    parser.add_argument(
>> > +        '--names-only',
>> > +        dest='names_only',
>> > +        action='store_true',
>> > +        default=False,
>> > +        help="Don't output files, just generate a list of
>> > filenames
>> > to stdout")
>> > +    args = parser.parse_args()
>> > +
>> > +    for test_args in all_tests(args.names_only):
>> > +        generate(*test_args)
>> > +
>> > +
>> > +if __name__ == '__main__':
>> > +    main()
>> > diff --git
>> > a/generated_tests/templates/gen_flat_interpolation_qualifier/compil
>> > er
>> > .mako
>> > b/generated_tests/templates/gen_flat_interpolation_qualifier/compil
>> > er
>> > .mako
>> > new file mode 100644
>> > index 0000000..eb6117f
>> > --- /dev/null
>> > +++
>> > b/generated_tests/templates/gen_flat_interpolation_qualifier/compil
>> > er
>> > .mako
>> > @@ -0,0 +1,98 @@
>> > +## -*- coding: utf-8 -*-
>> > +<%
>> > +    if ver == 'GL_ARB_gpu_shader_fp64':
>> > +        glsl_version_int = '150'
>> > +    else:
>> > +        glsl_version_int = ver
>> > +
>> > +    glsl_version = glsl_version_int[0] + '.' +
>> > glsl_version_int[1:3]
>> > +%>\
>> > +/* [config]
>> > + * expect_result: \
>> > +% if mode == 'flat':
>> > +pass
>> > +% else:
>> > +fail
>> > +% endif
>> > + * glsl_version: ${glsl_version}
>> > +% if ver == 'GL_ARB_gpu_shader_fp64':
>> > + * require_extensions: ${ver}
>> > +% endif
>> > + * [end config]
>> > + *
>> > +<%block name="comments"/>\
>> > +% if ver == 'GL_ARB_gpu_shader_fp64':
>> > + *
>> > + * ${ver} spec states:
>> > + *
>> > + *    "Modifications to The OpenGL Shading Language Specification,
>> > Version 1.50
>> > + *     (Revision 09)
>> > + *    ...
>> > + *        Modify Section 4.3.4, Inputs, p. 31
>> > + *    ...
>> > + *        (modify third paragraph, p. 32, allowing doubles as
>> > inputs
>> > and disallowing
>> > + *        as non-flat fragment inputs) ... Fragment inputs can
>> > only
>> > be signed and
>> > + *        unsigned integers and integer vectors, float, floating-
>> > point vectors,
>> > + *        double, double-precision vectors, single- or double-
>> > precision matrices, or
>> > + *        arrays or structures of these. Fragment shader inputs
>> > that
>> > are signed or
>> > + *        unsigned integers, integer vectors, doubles, double-
>> > precision vectors, or
>> > + *        double-precision matrices must be qualified with the
>> > interpolation
>> > + *        qualifier flat."
>> > +% elif ver == '130':
>> > + *
>> > + * The OpenGL Shading Language 1.30 spec states:
>> > + *
>> > + *    "4.3.6 Outputs
>> > + *    ...
>> > + *        If a vertex output is a signed or unsigned integer or
>> > + *        integer vector, then it must be qualified with the
>> > + *        interpolation qualifier flat.
>> > + *    ...
>> > + *        The type and presence of the interpolation qualifiers
>> > and
>> > + *        storage qualifiers and invariant qualifiers of variables
>> > + *        with the same name declared in linked vertex and
>> > fragments
>> > + *        shaders must match, otherwise the link command will
>> > fail."
>> > + *
>> > + * From this, it can be followed that if a fragment input is a
>> > signed
>> > + * or unsigned integer or derived type, it must be qualified with
>> > the
>> > + * interpolation qualifier flat.
>> > +% elif ver == '150':
>> > + *
>> > + * The OpenGL Shading Language 1.50 spec states:
>> > + *
>> > + *    "4.3.4 Inputs
>> > + *    ...
>> > + *        Fragment shader inputs that are signed or unsigned
>> > integers
>> > + *        or integer vectors must be qualified with the
>> > interpolation
>> > + *        qualifier flat."
>> > +% elif ver == '400':
>> > + *
>> > + * The OpenGL Shading Language 4.00 spec states:
>> > + *
>> > + *    "4.3.4 Inputs
>> > + *    ...
>> > + *        Fragment shader inputs that are signed or unsigned
>> > integers,
>> > + *        integer vectors, or any double-precision floating-point
>> > type
>> > + *        must be qualified with the interpolation qualifier
>> > flat."
>> > +% elif ver == '300 es':
>> > + *
>> > + * The OpenGL ES Shading Language 3.00 spec states:
>> > + *
>> > + *    "4.3.4 Input Variables
>> > + *    ...
>> > + *        Fragment shader inputs that are, or contain, signed or
>> > + *        unsigned integers or integer vectors must be qualified
>> > with
>> > + *        the interpolation qualifier flat."
>> > +% endif
>> > + */
>> > +
>> > +#version ${glsl_version_int}
>> > +% if ver == 'GL_ARB_gpu_shader_fp64':
>> > +#extension ${ver} : require
>> > +% endif
>> > +% if ver.endswith(' es'):
>> > +
>> > +precision mediump float;
>> > +% endif
>> > +
>> > +${next.body()}\
>> > diff --git
>> > a/generated_tests/templates/gen_flat_interpolation_qualifier/templa
>> > te
>> > .frag.mako
>> > b/generated_tests/templates/gen_flat_interpolation_qualifier/templa
>> > te
>> > .frag.mako
>> > new file mode 100644
>> > index 0000000..c15e3c2
>> > --- /dev/null
>> > +++
>> > b/generated_tests/templates/gen_flat_interpolation_qualifier/templa
>> > te
>> > .frag.mako
>> > @@ -0,0 +1,60 @@
>> > +## -*- coding: utf-8 -*-
>> > +<%inherit file="compiler.mako"/>\
>> > +<%
>> > +   var_name = 'u'
>> > +   var_as_vec4 = 's.' + var_name if struct else var_name
>> > +   if array:
>> > +      var_name += '[4]'
>> > +      var_as_vec4 += '[3]'
>> > +
>> > +   if type_name.startswith('dmat'):
>> > +      var_as_vec4 += '[0]'
>> > +
>> > +   if type_name.endswith('2'):
>> > +      var_as_vec4 += '.xyxy'
>> > +   elif type_name.endswith('3'):
>> > +      var_as_vec4 += '.xyzx'
>> > +%>\
>> > +<%block name="comments">\
>> > + * Declare a ${mode} interpolation ${type_name}\
>> > +% if array:
>> > + array\
>> > +% endif
>> > +% if struct:
>> > + inside a struct\
>> > +% endif
>> > +% if interface_block:
>> > + in an interface block\
>> > +% endif
>> > +.
>> > +</%block>\
>> > +% if struct:
>> > +struct S {
>> > +    ${type_name} ${var_name};
>> > +};
>> > +
>> > +% endif
>> > +% if interface_block:
>> > +in IB {
>> > +    \
>> > +% endif
>> > +% if mode != 'default':
>> > +${mode} \
>> > +% endif
>> > +% if not interface_block:
>> > +in \
>> > +% endif
>> > +% if struct:
>> > +S s;
>> > +% else:
>> > +${type_name} ${var_name};
>> > +% endif
>> > +% if interface_block:
>> > +};
>> > +% endif
>> > +out vec4 color;
>> > +
>> > +void main()
>> > +{
>> > +    color = vec4(${var_as_vec4});
>> > +}
>> > diff --git a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-int-array.frag b/tests/spec/glsl-
>> > 1.30/compiler/interpolation-qualifiers/nonflat-int-array.frag
>> > deleted file mode 100644
>> > index 4a610e9..0000000
>> > --- a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-
>> > int-array.frag
>> > +++ /dev/null
>> > @@ -1,31 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 1.30
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Inputs") of the GLSL 1.50 spec:
>> > -//    "Fragment shader inputs that are signed or unsigned integers
>> > or
>> > -//    integer vectors must be qualified with the interpolation
>> > qualifier
>> > -//    flat."
>> > -//
>> > -// Note that prior to GLSL 1.50, this requirement is applied to
>> > vertex
>> > -// outputs rather than fragment inputs.  That creates problems in
>> > the
>> > -// presence of geometry shaders, so we assume the implementation
>> > -// should adopt the GLSL 1.50 rule for all desktop GL shaders.
>> > -//
>> > -// Note also that the text above makes no provision about arrays
>> > of
>> > -// integers; this is presumably an oversight, since there is no
>> > -// reasonable way to interpolate a fragment shader input that
>> > contains
>> > -// an integer.
>> > -
>> > -#version 130
>> > -
>> > -in int[2] x;
>> > -
>> > -void main()
>> > -{
>> > -   gl_FragColor = vec4(float(x[0]), float(x[1]), 0.0, 0.0);
>> > -}
>> > diff --git a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-int.frag b/tests/spec/glsl-
>> > 1.30/compiler/interpolation-qualifiers/nonflat-int.frag
>> > deleted file mode 100644
>> > index 9cfc82e..0000000
>> > --- a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-
>> > int.frag
>> > +++ /dev/null
>> > @@ -1,26 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 1.30
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Inputs") of the GLSL 1.50 spec:
>> > -//    "Fragment shader inputs that are signed or unsigned integers
>> > or
>> > -//    integer vectors must be qualified with the interpolation
>> > qualifier
>> > -//    flat."
>> > -//
>> > -// Note that prior to GLSL 1.50, this requirement is applied to
>> > vertex
>> > -// outputs rather than fragment inputs.  That creates problems in
>> > the
>> > -// presence of geometry shaders, so we assume the implementation
>> > -// should adopt the GLSL 1.50 rule for all desktop GL shaders.
>> > -
>> > -#version 130
>> > -
>> > -in int x;
>> > -
>> > -void main()
>> > -{
>> > -   gl_FragColor = vec4(float(x));
>> > -}
>> > diff --git a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-ivec4.frag b/tests/spec/glsl-
>> > 1.30/compiler/interpolation-qualifiers/nonflat-ivec4.frag
>> > deleted file mode 100644
>> > index 9fbf4e4..0000000
>> > --- a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-
>> > ivec4.frag
>> > +++ /dev/null
>> > @@ -1,26 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 1.30
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Inputs") of the GLSL 1.50 spec:
>> > -//    "Fragment shader inputs that are signed or unsigned integers
>> > or
>> > -//    integer vectors must be qualified with the interpolation
>> > qualifier
>> > -//    flat."
>> > -//
>> > -// Note that prior to GLSL 1.50, this requirement is applied to
>> > vertex
>> > -// outputs rather than fragment inputs.  That creates problems in
>> > the
>> > -// presence of geometry shaders, so we assume the implementation
>> > -// should adopt the GLSL 1.50 rule for all desktop GL shaders.
>> > -
>> > -#version 130
>> > -
>> > -in ivec4 x;
>> > -
>> > -void main()
>> > -{
>> > -   gl_FragColor = vec4(x);
>> > -}
>> > diff --git a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-uint.frag b/tests/spec/glsl-
>> > 1.30/compiler/interpolation-qualifiers/nonflat-uint.frag
>> > deleted file mode 100644
>> > index e5e114a..0000000
>> > --- a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-
>> > uint.frag
>> > +++ /dev/null
>> > @@ -1,26 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 1.30
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Inputs") of the GLSL 1.50 spec:
>> > -//    "Fragment shader inputs that are signed or unsigned integers
>> > or
>> > -//    integer vectors must be qualified with the interpolation
>> > qualifier
>> > -//    flat."
>> > -//
>> > -// Note that prior to GLSL 1.50, this requirement is applied to
>> > vertex
>> > -// outputs rather than fragment inputs.  That creates problems in
>> > the
>> > -// presence of geometry shaders, so we assume the implementation
>> > -// should adopt the GLSL 1.50 rule for all desktop GL shaders.
>> > -
>> > -#version 130
>> > -
>> > -in uint x;
>> > -
>> > -void main()
>> > -{
>> > -   gl_FragColor = vec4(float(x));
>> > -}
>> > diff --git a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-uvec4.frag b/tests/spec/glsl-
>> > 1.30/compiler/interpolation-qualifiers/nonflat-uvec4.frag
>> > deleted file mode 100644
>> > index b8dd7e2..0000000
>> > --- a/tests/spec/glsl-1.30/compiler/interpolation-
>> > qualifiers/nonflat-
>> > uvec4.frag
>> > +++ /dev/null
>> > @@ -1,26 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 1.30
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Inputs") of the GLSL 1.50 spec:
>> > -//    "Fragment shader inputs that are signed or unsigned integers
>> > or
>> > -//    integer vectors must be qualified with the interpolation
>> > qualifier
>> > -//    flat."
>> > -//
>> > -// Note that prior to GLSL 1.50, this requirement is applied to
>> > vertex
>> > -// outputs rather than fragment inputs.  That creates problems in
>> > the
>> > -// presence of geometry shaders, so we assume the implementation
>> > -// should adopt the GLSL 1.50 rule for all desktop GL shaders.
>> > -
>> > -#version 130
>> > -
>> > -in uvec4 x;
>> > -
>> > -void main()
>> > -{
>> > -   gl_FragColor = vec4(x);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-int-array.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/nonflat-int-array.frag
>> > deleted file mode 100644
>> > index a36ea73..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-int-array.frag
>> > +++ /dev/null
>> > @@ -1,22 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 3.00 es
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Input Variables") of the GLSL ES 3.00
>> > spec:
>> > -//    "Fragment shader inputs that are, or contain, signed or
>> > unsigned
>> > -//    integers or integer vectors must be qualified with the
>> > -//    interpolation qualifier flat."
>> > -
>> > -#version 300 es
>> > -
>> > -in int[2] x;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(float(x[0]), float(x[1]), 0.0, 0.0);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-int.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/nonflat-int.frag
>> > deleted file mode 100644
>> > index 470ebbf..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-int.frag
>> > +++ /dev/null
>> > @@ -1,22 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 3.00 es
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Input Variables") of the GLSL ES 3.00
>> > spec:
>> > -//    "Fragment shader inputs that are, or contain, signed or
>> > unsigned
>> > -//    integers or integer vectors must be qualified with the
>> > -//    interpolation qualifier flat."
>> > -
>> > -#version 300 es
>> > -
>> > -in int x;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(x);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-ivec4.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/nonflat-ivec4.frag
>> > deleted file mode 100644
>> > index ffdec89..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-ivec4.frag
>> > +++ /dev/null
>> > @@ -1,22 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 3.00 es
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Input Variables") of the GLSL ES 3.00
>> > spec:
>> > -//    "Fragment shader inputs that are, or contain, signed or
>> > unsigned
>> > -//    integers or integer vectors must be qualified with the
>> > -//    interpolation qualifier flat."
>> > -
>> > -#version 300 es
>> > -
>> > -in ivec4 x;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(x);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-uint.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/nonflat-uint.frag
>> > deleted file mode 100644
>> > index 52bb49d..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-uint.frag
>> > +++ /dev/null
>> > @@ -1,22 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 3.00 es
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Input Variables") of the GLSL ES 3.00
>> > spec:
>> > -//    "Fragment shader inputs that are, or contain, signed or
>> > unsigned
>> > -//    integers or integer vectors must be qualified with the
>> > -//    interpolation qualifier flat."
>> > -
>> > -#version 300 es
>> > -
>> > -in uint x;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(x);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-uvec4.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/nonflat-uvec4.frag
>> > deleted file mode 100644
>> > index 86e5702..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/nonflat-uvec4.frag
>> > +++ /dev/null
>> > @@ -1,22 +0,0 @@
>> > -// [config]
>> > -// expect_result: fail
>> > -// glsl_version: 3.00 es
>> > -// check_link: true
>> > -// [end config]
>> > -//
>> > -// Declare a non-flat integral fragment input.
>> > -//
>> > -// From section 4.3.4 ("Input Variables") of the GLSL ES 3.00
>> > spec:
>> > -//    "Fragment shader inputs that are, or contain, signed or
>> > unsigned
>> > -//    integers or integer vectors must be qualified with the
>> > -//    interpolation qualifier flat."
>> > -
>> > -#version 300 es
>> > -
>> > -in uvec4 x;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(x);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/varying-struct-nonflat-int.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/varying-struct-nonflat-
>> > int.frag
>> > deleted file mode 100644
>> > index 42360c2..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/varying-struct-nonflat-int.frag
>> > +++ /dev/null
>> > @@ -1,29 +0,0 @@
>> > -/* [config]
>> > - * expect_result: fail
>> > - * glsl_version: 3.00
>> > - * check_link: true
>> > - * [end config]
>> > - *
>> > - * From the GLSL ES 3.00 spec, Section 4.3.4 ("Input Variables"):
>> > - *
>> > - *     "Fragment shader inputs that are, or contain, signed or
>> > - *     unsigned integers or integer vectors must be qualified with
>> > the
>> > - *     interpolation qualifier flat."
>> > - *
>> > - * This test verifies that a non-flat varying struct containing
>> > - * signed integral data is properly flagged as an error.
>> > - */
>> > -
>> > -#version 300 es
>> > -
>> > -struct S {
>> > -   int i;
>> > -};
>> > -
>> > -in S foo;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(foo.i);
>> > -}
>> > diff --git a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/varying-struct-nonflat-uint.frag b/tests/spec/glsl-es-
>> > 3.00/compiler/interpolation-qualifiers/varying-struct-nonflat-
>> > uint.frag
>> > deleted file mode 100644
>> > index 525aaa1..0000000
>> > --- a/tests/spec/glsl-es-3.00/compiler/interpolation-
>> > qualifiers/varying-struct-nonflat-uint.frag
>> > +++ /dev/null
>> > @@ -1,29 +0,0 @@
>> > -/* [config]
>> > - * expect_result: fail
>> > - * glsl_version: 3.00
>> > - * check_link: true
>> > - * [end config]
>> > - *
>> > - * From the GLSL ES 3.00 spec, Section 4.3.4 ("Input Variables"):
>> > - *
>> > - *     "Fragment shader inputs that are, or contain, signed or
>> > - *     unsigned integers or integer vectors must be qualified with
>> > the
>> > - *     interpolation qualifier flat."
>> > - *
>> > - * This test verifies that a non-flat varying struct containing
>> > - * unsigned integral data is properly flagged as an error.
>> > - */
>> > -
>> > -#version 300 es
>> > -
>> > -struct S {
>> > -   uint u;
>> > -};
>> > -
>> > -in S foo;
>> > -out highp vec4 color;
>> > -
>> > -void main()
>> > -{
>> > -   color = vec4(foo.u);
>> > -}
> --
> Br,
>
> Andres
>
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/piglit
>


More information about the Piglit mailing list