Acked-by: Dave Airlie <[email protected]>
On 18 April 2016 at 23:06, Andres Gomez <[email protected]> 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 <[email protected]> >> > --- >> > 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 > [email protected] > https://lists.freedesktop.org/mailman/listinfo/piglit > _______________________________________________ Piglit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/piglit
