[4/5] generators/gen_vs_in_fp64: Adds support to specify the GL type in the VBO

Submitted by Andres Gomez on June 14, 2016, 9:37 p.m.

Details

Message ID 1465940221-24431-5-git-send-email-agomez@igalia.com
State Accepted
Headers show
Series "More additional tests for ARB_vertex_attrib_64bit extension" ( rev: 2 ) in Piglit

Not browsing as part of any series.

Commit Message

Andres Gomez June 14, 2016, 9:37 p.m.
Signed-off-by: Andres Gomez <agomez@igalia.com>
---
 generated_tests/gen_vs_in_fp64.py                  | 266 +++++++++++++++++----
 .../gen_vs_in_fp64/regular.shader_test.mako        |  21 +-
 2 files changed, 222 insertions(+), 65 deletions(-)

Patch hide | download patch | download mbox

diff --git a/generated_tests/gen_vs_in_fp64.py b/generated_tests/gen_vs_in_fp64.py
index 88c4952..af7e81b 100644
--- a/generated_tests/gen_vs_in_fp64.py
+++ b/generated_tests/gen_vs_in_fp64.py
@@ -72,47 +72,165 @@  DOUBLE_NORMAL_VALUES   = ['0xffefffffffffffff', # Negative maximum normalized
                           '0x4b1e35ed24eb6496', # +7.23401345e+53
                           '0x7fefffffffffffff'] # Positive maximum normalized
 
-DSCALAR_TYPES          = [glsltypes.DOUBLE]
-
-DVEC_TYPES             = [glsltypes.DVEC2, glsltypes.DVEC3, glsltypes.DVEC4]
-
-DMAT_TYPES             = [glsltypes.DMAT2, glsltypes.DMAT2X3, glsltypes.DMAT2X4,
+FLOAT_POS_ZERO         = ['0x00000000'] #  0.0
+
+FLOAT_NORMAL_VALUES    = ['0xc21620c5', # -3.7532
+                          '0x75bc289b', #  4.7703e32
+                          '0x54c1c081', #  6.6572e12
+                          '0x878218f8', # -1.9575e-34
+                          '0x7e0857ed', #  4.5307886e37
+                          '0x2bb561bf', #  1.2887954e-12
+                          '0xff7fffff', # Negative maximum normalized
+                          '0xcb800000', # -16777216.0
+                          '0xc0a00000', # -5.0
+                          '0xbff92e73', # -1.9467300
+                          '0x80800000', # Negative minimum normalized
+                          '0x00800000', # Positive minimum normalized
+                          '0x3ff92e73', #  1.9467300
+                          '0x40a00000', #  5.0
+                          '0x4b800000', #  16777216.0
+                          '0x7f7fffff'] # Positive maximum normalized
+
+UBYTE_VALUES           = ['0', # Minimum
+                          '127', # Signed byte low frontier
+                          '128', # Signed byte up frontier
+                          '255', # Maximum
+                          '1',
+                          '5',
+                          '14',
+                          '23',
+                          '58',
+                          '91',
+                          '113',
+                          '135',
+                          '179',
+                          '185',
+                          '205',
+                          '207',
+                          '212']
+
+BYTE_VALUES            = ['-128', # Minimum
+                          '-5',
+                          '-1',
+                          '0',
+                          '1',
+                          '5',
+                          '127', # Maximum
+                          '-125',
+                          '-120',
+                          '-117',
+                          '-69',
+                          '-24',
+                          '-20',
+                          '21',
+                          '89',
+                          '106',
+                          '119']
+
+USHORT_VALUES          = ['0', # Minimum
+                          '32767', # Signed short low frontier
+                          '32768', # Signed short up frontier
+                          '65535', # Maximum
+                          '1',
+                          '5',
+                          '12610',
+                          '17110',
+                          '19962',
+                          '23589',
+                          '37265',
+                          '41792',
+                          '45699',
+                          '47934',
+                          '55916',
+                          '56412',
+                          '65142']
+
+SHORT_VALUES           = ['-32768', # Minimum
+                          '-5',
+                          '-1',
+                          '0',
+                          '1',
+                          '5',
+                          '32767', # Maximum
+                          '-16255',
+                          '-12480',
+                          '-12360',
+                          '1706',
+                          '5386',
+                          '7315',
+                          '18137',
+                          '25871',
+                          '26255',
+                          '26472']
+
+UINT_VALUES            = ['0', # Minimum
+                          '2147483647', # Signed int low frontier
+                          '2147483648', # Signed int up frontier
+                          '4294967295', # Maximum
+                          '1',
+                          '5',
+                          '1073294963',
+                          '1084227584',
+                          '1266679808',
+                          '1421983873',
+                          '2114476013',
+                          '2273450232',
+                          '3220778611',
+                          '3231711232',
+                          '3256230085',
+                          '3414163456',
+                          '4294967294']
+
+INT_VALUES             = ['-2147483648', # Minimum
+                          '-5',
+                          '-1',
+                          '0',
+                          '1',
+                          '5',
+                          '2147483647', # Maximum
+                          '-1038737211',
+                          '-1063256064',
+                          '-1074188685',
+                          '-880803840',
+                          '1073294963',
+                          '1084227584',
+                          '1266679808',
+                          '1421983873',
+                          '1975265435',
+                          '2114476013']
+
+GL_TYPES_VALUES        = {'double': DOUBLE_NORMAL_VALUES + DOUBLE_POS_ZERO,
+                          'float': FLOAT_NORMAL_VALUES + FLOAT_POS_ZERO,
+                          'ubyte': UBYTE_VALUES,
+                          'byte': BYTE_VALUES,
+                          'ushort': USHORT_VALUES,
+                          'short': SHORT_VALUES,
+                          'uint': UINT_VALUES,
+                          'int': INT_VALUES}
+
+GLSL_DSCALAR_TYPES     = [glsltypes.DOUBLE]
+
+GLSL_DVEC_TYPES        = [glsltypes.DVEC2, glsltypes.DVEC3, glsltypes.DVEC4]
+
+GLSL_DMAT_TYPES        = [glsltypes.DMAT2, glsltypes.DMAT2X3, glsltypes.DMAT2X4,
                           glsltypes.DMAT3X2, glsltypes.DMAT3, glsltypes.DMAT3X4,
                           glsltypes.DMAT4X2, glsltypes.DMAT4X3, glsltypes.DMAT4]
 
-FSCALAR_TYPES          = [glsltypes.FLOAT]
+GLSL_FSCALAR_TYPES     = [glsltypes.FLOAT]
 
-FVEC_TYPES             = [glsltypes.VEC2, glsltypes.VEC3, glsltypes.VEC4]
+GLSL_FVEC_TYPES        = [glsltypes.VEC2, glsltypes.VEC3, glsltypes.VEC4]
 
-FMAT_TYPES             = [glsltypes.MAT2, glsltypes.MAT2X3, glsltypes.MAT2X4,
+GLSL_FMAT_TYPES        = [glsltypes.MAT2, glsltypes.MAT2X3, glsltypes.MAT2X4,
                           glsltypes.MAT3X2, glsltypes.MAT3, glsltypes.MAT3X4,
                           glsltypes.MAT4X2, glsltypes.MAT4X3, glsltypes.MAT4]
 
-ISCALAR_TYPES          = [glsltypes.INT]
-
-IVEC_TYPES             = [glsltypes.IVEC2, glsltypes.IVEC3, glsltypes.IVEC4]
+GLSL_ISCALAR_TYPES     = [glsltypes.INT]
 
-USCALAR_TYPES          = [glsltypes.UINT]
+GLSL_IVEC_TYPES        = [glsltypes.IVEC2, glsltypes.IVEC3, glsltypes.IVEC4]
 
-UVEC_TYPES             = [glsltypes.UVEC2, glsltypes.UVEC3, glsltypes.UVEC4]
+GLSL_USCALAR_TYPES     = [glsltypes.UINT]
 
-HEX_VALUES_32BIT       = ['0xc21620c5', # -3.7532        float, -1038737211 int, 3256230085 uint
-                          '0x75bc289b', #  4.7703e32     float,  1975265435 int, 1975265435 uint
-                          '0x54c1c081', #  6.6572e12     float,  1421983873 int, 1421983873 uint
-                          '0x878218f8', # -1.9575e-34    float, -1038737211 int, 2273450232 uint
-                          '0x7e0857ed', #  4.5307886e+37 float,  2114476013 int, 2114476013 uint
-                          '0x2bb561bf', #  1.2887954e-12 float,   733307327 int,  733307327 uint
-                          '0xff7fffff', # -3.4028235e+38 float,    -8388609 int, 4286578687 uint
-                          '0xcb800000', # -16777216.0    float,  -880803840 int, 3414163456 uint
-                          '0xc0a00000', # -5.0           float, -1063256064 int, 3231711232 uint
-                          '0xbff92e73', # -1.9467300     float, -1074188685 int, 3220778611 uint
-                          '0x80800000', # -1.1754944e-38 float, -2139095040 int, 2155872256 uint
-                          '0x00000000', #  0.0           float,           0 int,          0 uint
-                          '0x00800000', #  1.1754944e-38 float,     8388608 int,    8388608 uint
-                          '0x3ff92e73', #  1.9467300     float,  1073294963 int, 1073294963 uint
-                          '0x40a00000', #  5.0           float,  1084227584 int, 1084227584 uint
-                          '0x4b800000', #  16777216.0    float,  1266679808 int, 1266679808 uint
-                          '0x7f7fffff'] #  3.4028235e+38 float,  2139095039 int, 2139095039 uint
+GLSL_UVEC_TYPES        = [glsltypes.UVEC2, glsltypes.UVEC3, glsltypes.UVEC4]
 
 
 # pylint: enable=bad-whitespace,line-too-long
@@ -155,15 +273,18 @@  class RegularTestTuple(TestTuple):
     @staticmethod
     def create_in_types_array(*types_arrays):
         """Creates vertex input combinations."""
+
         for product_item in itertools.product(*types_arrays):
             yield product_item
 
     @staticmethod
-    def create_tests(glsl_vers, in_types_array, position_orders, arrays_array, names_only):
+    def create_tests(glsl_vers, in_types_array, gl_types,
+                     position_orders, arrays_array, names_only):
         """Creates combinations for flat qualifier tests."""
 
         assert isinstance(glsl_vers, list)
         assert isinstance(in_types_array, types.GeneratorType)
+        assert isinstance(gl_types, list)
         assert isinstance(position_orders, list)
         assert isinstance(arrays_array, list)
         assert isinstance(names_only, bool)
@@ -188,7 +309,7 @@  class RegularTestTuple(TestTuple):
             if num_vs_in > MAX_VERTEX_ATTRIBS:
                 continue
 
-            yield ver, in_types, position_order, arrays, num_vs_in, names_only
+            yield ver, in_types, gl_types, position_order, arrays, num_vs_in, names_only
 
     @staticmethod
     def all_tests(names_only):
@@ -202,10 +323,29 @@  class RegularTestTuple(TestTuple):
         for test_args in RegularTestTuple.create_tests(
                 ['GL_ARB_vertex_attrib_64bit', '410'],
                 RegularTestTuple.create_in_types_array(
-                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES),
-                    itertools.chain(FSCALAR_TYPES, FVEC_TYPES, FMAT_TYPES,
-                                    ISCALAR_TYPES, IVEC_TYPES,
-                                    USCALAR_TYPES, UVEC_TYPES)),
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
+                    itertools.chain(GLSL_FSCALAR_TYPES, GLSL_FVEC_TYPES, GLSL_FMAT_TYPES)),
+                ['double', 'float'],
+                [1, 2, 3],
+                [[1, 1], [1, 3], [5, 1], [5, 3]],
+                names_only):
+            yield RegularTestTuple(*test_args)
+        for test_args in RegularTestTuple.create_tests(
+                ['GL_ARB_vertex_attrib_64bit', '410'],
+                RegularTestTuple.create_in_types_array(
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
+                    itertools.chain(GLSL_ISCALAR_TYPES, GLSL_IVEC_TYPES)),
+                ['double', 'int'],
+                [1, 2, 3],
+                [[1, 1], [1, 3], [5, 1], [5, 3]],
+                names_only):
+            yield RegularTestTuple(*test_args)
+        for test_args in RegularTestTuple.create_tests(
+                ['GL_ARB_vertex_attrib_64bit', '410'],
+                RegularTestTuple.create_in_types_array(
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
+                    itertools.chain(GLSL_USCALAR_TYPES, GLSL_UVEC_TYPES)),
+                ['double', 'uint'],
                 [1, 2, 3],
                 [[1, 1], [1, 3], [5, 1], [5, 3]],
                 names_only):
@@ -213,10 +353,9 @@  class RegularTestTuple(TestTuple):
         for test_args in RegularTestTuple.create_tests(
                 ['GL_ARB_vertex_attrib_64bit', '410'],
                 RegularTestTuple.create_in_types_array(
-                    itertools.chain(FSCALAR_TYPES, FVEC_TYPES, FMAT_TYPES,
-                                    ISCALAR_TYPES, IVEC_TYPES,
-                                    USCALAR_TYPES, UVEC_TYPES),
-                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES)),
+                    itertools.chain(GLSL_FSCALAR_TYPES, GLSL_FVEC_TYPES, GLSL_FMAT_TYPES),
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
+                ['float', 'double'],
                 [1, 2, 3],
                 [[1, 1], [1, 2], [3, 1], [3, 2]],
                 names_only):
@@ -224,8 +363,9 @@  class RegularTestTuple(TestTuple):
         for test_args in RegularTestTuple.create_tests(
                 ['GL_ARB_vertex_attrib_64bit', '410'],
                 RegularTestTuple.create_in_types_array(
-                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES),
-                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES)),
+                    itertools.chain(GLSL_ISCALAR_TYPES, GLSL_IVEC_TYPES),
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
+                ['int', 'double'],
                 [1, 2, 3],
                 [[1, 1], [1, 2], [3, 1], [3, 2]],
                 names_only):
@@ -233,15 +373,38 @@  class RegularTestTuple(TestTuple):
         for test_args in RegularTestTuple.create_tests(
                 ['GL_ARB_vertex_attrib_64bit', '410'],
                 RegularTestTuple.create_in_types_array(
-                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES)),
+                    itertools.chain(GLSL_USCALAR_TYPES, GLSL_UVEC_TYPES),
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
+                ['uint', 'double'],
+                [1, 2, 3],
+                [[1, 1], [1, 2], [3, 1], [3, 2]],
+                names_only):
+            yield RegularTestTuple(*test_args)
+        for test_args in RegularTestTuple.create_tests(
+                ['GL_ARB_vertex_attrib_64bit', '410'],
+                RegularTestTuple.create_in_types_array(
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
+                ['double', 'double'],
+                [1, 2, 3],
+                [[1, 1], [1, 2], [3, 1], [3, 2]],
+                names_only):
+            yield RegularTestTuple(*test_args)
+        for test_args in RegularTestTuple.create_tests(
+                ['GL_ARB_vertex_attrib_64bit', '410'],
+                RegularTestTuple.create_in_types_array(
+                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
+                ['double'],
                 [1, 2],
                 [[1], [5]],
                 names_only):
             yield RegularTestTuple(*test_args)
 
-    def __init__(self, ver, in_types, position_order, arrays, num_vs_in, names_only):
+    def __init__(self, ver, in_types, gl_types, position_order, arrays, num_vs_in, names_only):
         assert ver in ('GL_ARB_vertex_attrib_64bit', '410', '420')
         assert isinstance(in_types, tuple)
+        assert isinstance(gl_types, list)
+        assert len(gl_types) == len(in_types)
         assert isinstance(position_order, int)
         assert (position_order > 0) and (position_order - 1 <= len(in_types))
         assert isinstance(arrays, list)
@@ -249,6 +412,7 @@  class RegularTestTuple(TestTuple):
         super(RegularTestTuple, self).__init__(ver, names_only)
 
         self._in_types = in_types
+        self._gl_types = gl_types
         self._position_order = position_order
         self._arrays = arrays
         self._num_vs_in = num_vs_in
@@ -259,8 +423,8 @@  class RegularTestTuple(TestTuple):
         for idx, in_type in enumerate(self._in_types):
             if idx == self._position_order - 1:
                 filename += '-position'
-            filename += '-{}{}'.format(
-                in_type.name, '-array{}'.format(
+            filename += '-{}_{}{}'.format(
+                self._gl_types[idx], in_type.name, '_array{}'.format(
                     self._arrays[idx]) if self._arrays[idx] - 1 else '')
         if self._position_order > len(self._in_types):
             filename += '-position'
@@ -272,11 +436,12 @@  class RegularTestTuple(TestTuple):
                     'regular.shader_test.mako').render_unicode(
                         ver=self._ver,
                         in_types=self._in_types,
+                        gl_types=self._gl_types,
                         position_order=self._position_order,
                         arrays=self._arrays,
                         num_vs_in=self._num_vs_in,
-                        dvalues=DOUBLE_NORMAL_VALUES + DOUBLE_POS_ZERO,
-                        hvalues=HEX_VALUES_32BIT))
+                        gl_types_values=GL_TYPES_VALUES))
+
         print(filename)
 
 
@@ -296,7 +461,7 @@  class ColumnsTestTuple(TestTuple):
             for ver in glsl_vers:
                 utils.safe_makedirs(TestTuple.get_dir_name(ver))
 
-        for mat in DMAT_TYPES:
+        for mat in GLSL_DMAT_TYPES:
             for columns in itertools.product(range(2), repeat=mat.columns):
                 if (0 not in columns) or (1 not in columns):
                     continue
@@ -327,7 +492,8 @@  class ColumnsTestTuple(TestTuple):
                         ver=self._ver,
                         mat=self._mat,
                         columns=self._columns,
-                        dvalues=DOUBLE_NORMAL_VALUES + DOUBLE_POS_ZERO))
+                        dvalues=GL_TYPES_VALUES['double']))
+
         print(filename)
 
 
diff --git a/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako b/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako
index fa54932..b6fab62 100644
--- a/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako
+++ b/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako
@@ -31,16 +31,6 @@ 
       glsl_version = '{}.{}'.format(glsl_version_int[0], glsl_version_int[1:3])
 
       return (glsl_version, glsl_version_int)
-
-  def _glsl_to_gl(glsl_type):
-      if glsl_type.startswith("d"):
-          return "double"
-      elif glsl_type.startswith("u"):
-          return "uint"
-      elif glsl_type.startswith("i"):
-          return "int"
-      else:
-          return "float"
 %>
 <% glsl, glsl_int = _version(ver) %>
 
@@ -102,7 +92,7 @@  void main()
   % endif
   % for i in range(arrays[idx]):
     % for j in range(in_type.columns):
-    value${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}/${_glsl_to_gl(in_type.name)}/${in_type.name}${'/{}'.format(j) if (in_type.columns or 0) > 1 else ''} \
+    value${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}/${gl_types[idx]}/${in_type.name}${'/{}'.format(j) if in_type.columns > 1 else ''} \
     % endfor
   % endfor
 % endfor
@@ -110,7 +100,7 @@  void main()
   piglit_vertex/float/vec3\
 % endif
 
-% for d in range(len(dvalues)):
+% for d in range(len(gl_types_values['double'])):
   % for vertex in ('-1.0 -1.0  0.0', ' 1.0 -1.0  0.0', ' 1.0  1.0  0.0', '-1.0  1.0  0.0'):
     % for idx, in_type in enumerate(in_types):
       % if idx == position_order - 1:
@@ -119,7 +109,7 @@  void main()
       % for i in range(arrays[idx]):
         % for j in range(in_type.columns):
           % for k in range(in_type.rows):
-            ${dvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(dvalues)] if in_type.type.name == 'double' else hvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(hvalues)]}  \
+            ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k) % len(gl_types_values[gl_types[idx]])]}  \
           % endfor
          \
         % endfor
@@ -133,14 +123,15 @@  void main()
 % endfor
 
 [test]
-% for d in range(len(dvalues)):
+% for d in range(len(gl_types_values['double'])):
 
   % for idx, in_type in enumerate(in_types):
     % for i in range(arrays[idx]):
       uniform ${in_type.name} expected${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}\
       % for j in range(in_type.columns):
         % for k in range(in_type.rows):
-         ${dvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(dvalues)] if in_type.type.name == 'double' else hvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(hvalues)]}\
+	  ## Careful: these are the values for the VBO type, not the uniform type. If we use the hex format they should match or the run will fail.
+          ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k) % len(gl_types_values[gl_types[idx]])]}\
         % endfor
       % endfor
 

Comments

I don't have too much experience with generators and python code in
general. But the patch looks good:
Acked-by: Alejandro Piñeiro <apinheiro@igalia.com>

On 14/06/16 23:37, Andres Gomez wrote:
> Signed-off-by: Andres Gomez <agomez@igalia.com>
> ---
>  generated_tests/gen_vs_in_fp64.py                  | 266 +++++++++++++++++----
>  .../gen_vs_in_fp64/regular.shader_test.mako        |  21 +-
>  2 files changed, 222 insertions(+), 65 deletions(-)
>
> diff --git a/generated_tests/gen_vs_in_fp64.py b/generated_tests/gen_vs_in_fp64.py
> index 88c4952..af7e81b 100644
> --- a/generated_tests/gen_vs_in_fp64.py
> +++ b/generated_tests/gen_vs_in_fp64.py
> @@ -72,47 +72,165 @@ DOUBLE_NORMAL_VALUES   = ['0xffefffffffffffff', # Negative maximum normalized
>                            '0x4b1e35ed24eb6496', # +7.23401345e+53
>                            '0x7fefffffffffffff'] # Positive maximum normalized
>  
> -DSCALAR_TYPES          = [glsltypes.DOUBLE]
> -
> -DVEC_TYPES             = [glsltypes.DVEC2, glsltypes.DVEC3, glsltypes.DVEC4]
> -
> -DMAT_TYPES             = [glsltypes.DMAT2, glsltypes.DMAT2X3, glsltypes.DMAT2X4,
> +FLOAT_POS_ZERO         = ['0x00000000'] #  0.0
> +
> +FLOAT_NORMAL_VALUES    = ['0xc21620c5', # -3.7532
> +                          '0x75bc289b', #  4.7703e32
> +                          '0x54c1c081', #  6.6572e12
> +                          '0x878218f8', # -1.9575e-34
> +                          '0x7e0857ed', #  4.5307886e37
> +                          '0x2bb561bf', #  1.2887954e-12
> +                          '0xff7fffff', # Negative maximum normalized
> +                          '0xcb800000', # -16777216.0
> +                          '0xc0a00000', # -5.0
> +                          '0xbff92e73', # -1.9467300
> +                          '0x80800000', # Negative minimum normalized
> +                          '0x00800000', # Positive minimum normalized
> +                          '0x3ff92e73', #  1.9467300
> +                          '0x40a00000', #  5.0
> +                          '0x4b800000', #  16777216.0
> +                          '0x7f7fffff'] # Positive maximum normalized
> +
> +UBYTE_VALUES           = ['0', # Minimum
> +                          '127', # Signed byte low frontier
> +                          '128', # Signed byte up frontier
> +                          '255', # Maximum
> +                          '1',
> +                          '5',
> +                          '14',
> +                          '23',
> +                          '58',
> +                          '91',
> +                          '113',
> +                          '135',
> +                          '179',
> +                          '185',
> +                          '205',
> +                          '207',
> +                          '212']
> +
> +BYTE_VALUES            = ['-128', # Minimum
> +                          '-5',
> +                          '-1',
> +                          '0',
> +                          '1',
> +                          '5',
> +                          '127', # Maximum
> +                          '-125',
> +                          '-120',
> +                          '-117',
> +                          '-69',
> +                          '-24',
> +                          '-20',
> +                          '21',
> +                          '89',
> +                          '106',
> +                          '119']
> +
> +USHORT_VALUES          = ['0', # Minimum
> +                          '32767', # Signed short low frontier
> +                          '32768', # Signed short up frontier
> +                          '65535', # Maximum
> +                          '1',
> +                          '5',
> +                          '12610',
> +                          '17110',
> +                          '19962',
> +                          '23589',
> +                          '37265',
> +                          '41792',
> +                          '45699',
> +                          '47934',
> +                          '55916',
> +                          '56412',
> +                          '65142']
> +
> +SHORT_VALUES           = ['-32768', # Minimum
> +                          '-5',
> +                          '-1',
> +                          '0',
> +                          '1',
> +                          '5',
> +                          '32767', # Maximum
> +                          '-16255',
> +                          '-12480',
> +                          '-12360',
> +                          '1706',
> +                          '5386',
> +                          '7315',
> +                          '18137',
> +                          '25871',
> +                          '26255',
> +                          '26472']
> +
> +UINT_VALUES            = ['0', # Minimum
> +                          '2147483647', # Signed int low frontier
> +                          '2147483648', # Signed int up frontier
> +                          '4294967295', # Maximum
> +                          '1',
> +                          '5',
> +                          '1073294963',
> +                          '1084227584',
> +                          '1266679808',
> +                          '1421983873',
> +                          '2114476013',
> +                          '2273450232',
> +                          '3220778611',
> +                          '3231711232',
> +                          '3256230085',
> +                          '3414163456',
> +                          '4294967294']
> +
> +INT_VALUES             = ['-2147483648', # Minimum
> +                          '-5',
> +                          '-1',
> +                          '0',
> +                          '1',
> +                          '5',
> +                          '2147483647', # Maximum
> +                          '-1038737211',
> +                          '-1063256064',
> +                          '-1074188685',
> +                          '-880803840',
> +                          '1073294963',
> +                          '1084227584',
> +                          '1266679808',
> +                          '1421983873',
> +                          '1975265435',
> +                          '2114476013']
> +
> +GL_TYPES_VALUES        = {'double': DOUBLE_NORMAL_VALUES + DOUBLE_POS_ZERO,
> +                          'float': FLOAT_NORMAL_VALUES + FLOAT_POS_ZERO,
> +                          'ubyte': UBYTE_VALUES,
> +                          'byte': BYTE_VALUES,
> +                          'ushort': USHORT_VALUES,
> +                          'short': SHORT_VALUES,
> +                          'uint': UINT_VALUES,
> +                          'int': INT_VALUES}
> +
> +GLSL_DSCALAR_TYPES     = [glsltypes.DOUBLE]
> +
> +GLSL_DVEC_TYPES        = [glsltypes.DVEC2, glsltypes.DVEC3, glsltypes.DVEC4]
> +
> +GLSL_DMAT_TYPES        = [glsltypes.DMAT2, glsltypes.DMAT2X3, glsltypes.DMAT2X4,
>                            glsltypes.DMAT3X2, glsltypes.DMAT3, glsltypes.DMAT3X4,
>                            glsltypes.DMAT4X2, glsltypes.DMAT4X3, glsltypes.DMAT4]
>  
> -FSCALAR_TYPES          = [glsltypes.FLOAT]
> +GLSL_FSCALAR_TYPES     = [glsltypes.FLOAT]
>  
> -FVEC_TYPES             = [glsltypes.VEC2, glsltypes.VEC3, glsltypes.VEC4]
> +GLSL_FVEC_TYPES        = [glsltypes.VEC2, glsltypes.VEC3, glsltypes.VEC4]
>  
> -FMAT_TYPES             = [glsltypes.MAT2, glsltypes.MAT2X3, glsltypes.MAT2X4,
> +GLSL_FMAT_TYPES        = [glsltypes.MAT2, glsltypes.MAT2X3, glsltypes.MAT2X4,
>                            glsltypes.MAT3X2, glsltypes.MAT3, glsltypes.MAT3X4,
>                            glsltypes.MAT4X2, glsltypes.MAT4X3, glsltypes.MAT4]
>  
> -ISCALAR_TYPES          = [glsltypes.INT]
> -
> -IVEC_TYPES             = [glsltypes.IVEC2, glsltypes.IVEC3, glsltypes.IVEC4]
> +GLSL_ISCALAR_TYPES     = [glsltypes.INT]
>  
> -USCALAR_TYPES          = [glsltypes.UINT]
> +GLSL_IVEC_TYPES        = [glsltypes.IVEC2, glsltypes.IVEC3, glsltypes.IVEC4]
>  
> -UVEC_TYPES             = [glsltypes.UVEC2, glsltypes.UVEC3, glsltypes.UVEC4]
> +GLSL_USCALAR_TYPES     = [glsltypes.UINT]
>  
> -HEX_VALUES_32BIT       = ['0xc21620c5', # -3.7532        float, -1038737211 int, 3256230085 uint
> -                          '0x75bc289b', #  4.7703e32     float,  1975265435 int, 1975265435 uint
> -                          '0x54c1c081', #  6.6572e12     float,  1421983873 int, 1421983873 uint
> -                          '0x878218f8', # -1.9575e-34    float, -1038737211 int, 2273450232 uint
> -                          '0x7e0857ed', #  4.5307886e+37 float,  2114476013 int, 2114476013 uint
> -                          '0x2bb561bf', #  1.2887954e-12 float,   733307327 int,  733307327 uint
> -                          '0xff7fffff', # -3.4028235e+38 float,    -8388609 int, 4286578687 uint
> -                          '0xcb800000', # -16777216.0    float,  -880803840 int, 3414163456 uint
> -                          '0xc0a00000', # -5.0           float, -1063256064 int, 3231711232 uint
> -                          '0xbff92e73', # -1.9467300     float, -1074188685 int, 3220778611 uint
> -                          '0x80800000', # -1.1754944e-38 float, -2139095040 int, 2155872256 uint
> -                          '0x00000000', #  0.0           float,           0 int,          0 uint
> -                          '0x00800000', #  1.1754944e-38 float,     8388608 int,    8388608 uint
> -                          '0x3ff92e73', #  1.9467300     float,  1073294963 int, 1073294963 uint
> -                          '0x40a00000', #  5.0           float,  1084227584 int, 1084227584 uint
> -                          '0x4b800000', #  16777216.0    float,  1266679808 int, 1266679808 uint
> -                          '0x7f7fffff'] #  3.4028235e+38 float,  2139095039 int, 2139095039 uint
> +GLSL_UVEC_TYPES        = [glsltypes.UVEC2, glsltypes.UVEC3, glsltypes.UVEC4]
>  
>  
>  # pylint: enable=bad-whitespace,line-too-long
> @@ -155,15 +273,18 @@ class RegularTestTuple(TestTuple):
>      @staticmethod
>      def create_in_types_array(*types_arrays):
>          """Creates vertex input combinations."""
> +
>          for product_item in itertools.product(*types_arrays):
>              yield product_item
>  
>      @staticmethod
> -    def create_tests(glsl_vers, in_types_array, position_orders, arrays_array, names_only):
> +    def create_tests(glsl_vers, in_types_array, gl_types,
> +                     position_orders, arrays_array, names_only):
>          """Creates combinations for flat qualifier tests."""
>  
>          assert isinstance(glsl_vers, list)
>          assert isinstance(in_types_array, types.GeneratorType)
> +        assert isinstance(gl_types, list)
>          assert isinstance(position_orders, list)
>          assert isinstance(arrays_array, list)
>          assert isinstance(names_only, bool)
> @@ -188,7 +309,7 @@ class RegularTestTuple(TestTuple):
>              if num_vs_in > MAX_VERTEX_ATTRIBS:
>                  continue
>  
> -            yield ver, in_types, position_order, arrays, num_vs_in, names_only
> +            yield ver, in_types, gl_types, position_order, arrays, num_vs_in, names_only
>  
>      @staticmethod
>      def all_tests(names_only):
> @@ -202,10 +323,29 @@ class RegularTestTuple(TestTuple):
>          for test_args in RegularTestTuple.create_tests(
>                  ['GL_ARB_vertex_attrib_64bit', '410'],
>                  RegularTestTuple.create_in_types_array(
> -                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES),
> -                    itertools.chain(FSCALAR_TYPES, FVEC_TYPES, FMAT_TYPES,
> -                                    ISCALAR_TYPES, IVEC_TYPES,
> -                                    USCALAR_TYPES, UVEC_TYPES)),
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
> +                    itertools.chain(GLSL_FSCALAR_TYPES, GLSL_FVEC_TYPES, GLSL_FMAT_TYPES)),
> +                ['double', 'float'],
> +                [1, 2, 3],
> +                [[1, 1], [1, 3], [5, 1], [5, 3]],
> +                names_only):
> +            yield RegularTestTuple(*test_args)
> +        for test_args in RegularTestTuple.create_tests(
> +                ['GL_ARB_vertex_attrib_64bit', '410'],
> +                RegularTestTuple.create_in_types_array(
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
> +                    itertools.chain(GLSL_ISCALAR_TYPES, GLSL_IVEC_TYPES)),
> +                ['double', 'int'],
> +                [1, 2, 3],
> +                [[1, 1], [1, 3], [5, 1], [5, 3]],
> +                names_only):
> +            yield RegularTestTuple(*test_args)
> +        for test_args in RegularTestTuple.create_tests(
> +                ['GL_ARB_vertex_attrib_64bit', '410'],
> +                RegularTestTuple.create_in_types_array(
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
> +                    itertools.chain(GLSL_USCALAR_TYPES, GLSL_UVEC_TYPES)),
> +                ['double', 'uint'],
>                  [1, 2, 3],
>                  [[1, 1], [1, 3], [5, 1], [5, 3]],
>                  names_only):
> @@ -213,10 +353,9 @@ class RegularTestTuple(TestTuple):
>          for test_args in RegularTestTuple.create_tests(
>                  ['GL_ARB_vertex_attrib_64bit', '410'],
>                  RegularTestTuple.create_in_types_array(
> -                    itertools.chain(FSCALAR_TYPES, FVEC_TYPES, FMAT_TYPES,
> -                                    ISCALAR_TYPES, IVEC_TYPES,
> -                                    USCALAR_TYPES, UVEC_TYPES),
> -                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES)),
> +                    itertools.chain(GLSL_FSCALAR_TYPES, GLSL_FVEC_TYPES, GLSL_FMAT_TYPES),
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
> +                ['float', 'double'],
>                  [1, 2, 3],
>                  [[1, 1], [1, 2], [3, 1], [3, 2]],
>                  names_only):
> @@ -224,8 +363,9 @@ class RegularTestTuple(TestTuple):
>          for test_args in RegularTestTuple.create_tests(
>                  ['GL_ARB_vertex_attrib_64bit', '410'],
>                  RegularTestTuple.create_in_types_array(
> -                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES),
> -                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES)),
> +                    itertools.chain(GLSL_ISCALAR_TYPES, GLSL_IVEC_TYPES),
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
> +                ['int', 'double'],
>                  [1, 2, 3],
>                  [[1, 1], [1, 2], [3, 1], [3, 2]],
>                  names_only):
> @@ -233,15 +373,38 @@ class RegularTestTuple(TestTuple):
>          for test_args in RegularTestTuple.create_tests(
>                  ['GL_ARB_vertex_attrib_64bit', '410'],
>                  RegularTestTuple.create_in_types_array(
> -                    itertools.chain(DSCALAR_TYPES, DVEC_TYPES, DMAT_TYPES)),
> +                    itertools.chain(GLSL_USCALAR_TYPES, GLSL_UVEC_TYPES),
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
> +                ['uint', 'double'],
> +                [1, 2, 3],
> +                [[1, 1], [1, 2], [3, 1], [3, 2]],
> +                names_only):
> +            yield RegularTestTuple(*test_args)
> +        for test_args in RegularTestTuple.create_tests(
> +                ['GL_ARB_vertex_attrib_64bit', '410'],
> +                RegularTestTuple.create_in_types_array(
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES),
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
> +                ['double', 'double'],
> +                [1, 2, 3],
> +                [[1, 1], [1, 2], [3, 1], [3, 2]],
> +                names_only):
> +            yield RegularTestTuple(*test_args)
> +        for test_args in RegularTestTuple.create_tests(
> +                ['GL_ARB_vertex_attrib_64bit', '410'],
> +                RegularTestTuple.create_in_types_array(
> +                    itertools.chain(GLSL_DSCALAR_TYPES, GLSL_DVEC_TYPES, GLSL_DMAT_TYPES)),
> +                ['double'],
>                  [1, 2],
>                  [[1], [5]],
>                  names_only):
>              yield RegularTestTuple(*test_args)
>  
> -    def __init__(self, ver, in_types, position_order, arrays, num_vs_in, names_only):
> +    def __init__(self, ver, in_types, gl_types, position_order, arrays, num_vs_in, names_only):
>          assert ver in ('GL_ARB_vertex_attrib_64bit', '410', '420')
>          assert isinstance(in_types, tuple)
> +        assert isinstance(gl_types, list)
> +        assert len(gl_types) == len(in_types)
>          assert isinstance(position_order, int)
>          assert (position_order > 0) and (position_order - 1 <= len(in_types))
>          assert isinstance(arrays, list)
> @@ -249,6 +412,7 @@ class RegularTestTuple(TestTuple):
>          super(RegularTestTuple, self).__init__(ver, names_only)
>  
>          self._in_types = in_types
> +        self._gl_types = gl_types
>          self._position_order = position_order
>          self._arrays = arrays
>          self._num_vs_in = num_vs_in
> @@ -259,8 +423,8 @@ class RegularTestTuple(TestTuple):
>          for idx, in_type in enumerate(self._in_types):
>              if idx == self._position_order - 1:
>                  filename += '-position'
> -            filename += '-{}{}'.format(
> -                in_type.name, '-array{}'.format(
> +            filename += '-{}_{}{}'.format(
> +                self._gl_types[idx], in_type.name, '_array{}'.format(
>                      self._arrays[idx]) if self._arrays[idx] - 1 else '')
>          if self._position_order > len(self._in_types):
>              filename += '-position'
> @@ -272,11 +436,12 @@ class RegularTestTuple(TestTuple):
>                      'regular.shader_test.mako').render_unicode(
>                          ver=self._ver,
>                          in_types=self._in_types,
> +                        gl_types=self._gl_types,
>                          position_order=self._position_order,
>                          arrays=self._arrays,
>                          num_vs_in=self._num_vs_in,
> -                        dvalues=DOUBLE_NORMAL_VALUES + DOUBLE_POS_ZERO,
> -                        hvalues=HEX_VALUES_32BIT))
> +                        gl_types_values=GL_TYPES_VALUES))
> +
>          print(filename)
>  
>  
> @@ -296,7 +461,7 @@ class ColumnsTestTuple(TestTuple):
>              for ver in glsl_vers:
>                  utils.safe_makedirs(TestTuple.get_dir_name(ver))
>  
> -        for mat in DMAT_TYPES:
> +        for mat in GLSL_DMAT_TYPES:
>              for columns in itertools.product(range(2), repeat=mat.columns):
>                  if (0 not in columns) or (1 not in columns):
>                      continue
> @@ -327,7 +492,8 @@ class ColumnsTestTuple(TestTuple):
>                          ver=self._ver,
>                          mat=self._mat,
>                          columns=self._columns,
> -                        dvalues=DOUBLE_NORMAL_VALUES + DOUBLE_POS_ZERO))
> +                        dvalues=GL_TYPES_VALUES['double']))
> +
>          print(filename)
>  
>  
> diff --git a/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako b/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako
> index fa54932..b6fab62 100644
> --- a/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako
> +++ b/generated_tests/templates/gen_vs_in_fp64/regular.shader_test.mako
> @@ -31,16 +31,6 @@
>        glsl_version = '{}.{}'.format(glsl_version_int[0], glsl_version_int[1:3])
>  
>        return (glsl_version, glsl_version_int)
> -
> -  def _glsl_to_gl(glsl_type):
> -      if glsl_type.startswith("d"):
> -          return "double"
> -      elif glsl_type.startswith("u"):
> -          return "uint"
> -      elif glsl_type.startswith("i"):
> -          return "int"
> -      else:
> -          return "float"
>  %>
>  <% glsl, glsl_int = _version(ver) %>
>  
> @@ -102,7 +92,7 @@ void main()
>    % endif
>    % for i in range(arrays[idx]):
>      % for j in range(in_type.columns):
> -    value${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}/${_glsl_to_gl(in_type.name)}/${in_type.name}${'/{}'.format(j) if (in_type.columns or 0) > 1 else ''} \
> +    value${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}/${gl_types[idx]}/${in_type.name}${'/{}'.format(j) if in_type.columns > 1 else ''} \
>      % endfor
>    % endfor
>  % endfor
> @@ -110,7 +100,7 @@ void main()
>    piglit_vertex/float/vec3\
>  % endif
>  
> -% for d in range(len(dvalues)):
> +% for d in range(len(gl_types_values['double'])):
>    % for vertex in ('-1.0 -1.0  0.0', ' 1.0 -1.0  0.0', ' 1.0  1.0  0.0', '-1.0  1.0  0.0'):
>      % for idx, in_type in enumerate(in_types):
>        % if idx == position_order - 1:
> @@ -119,7 +109,7 @@ void main()
>        % for i in range(arrays[idx]):
>          % for j in range(in_type.columns):
>            % for k in range(in_type.rows):
> -            ${dvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(dvalues)] if in_type.type.name == 'double' else hvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(hvalues)]}  \
> +            ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k) % len(gl_types_values[gl_types[idx]])]}  \
>            % endfor
>           \
>          % endfor
> @@ -133,14 +123,15 @@ void main()
>  % endfor
>  
>  [test]
> -% for d in range(len(dvalues)):
> +% for d in range(len(gl_types_values['double'])):
>  
>    % for idx, in_type in enumerate(in_types):
>      % for i in range(arrays[idx]):
>        uniform ${in_type.name} expected${idx}${'[{}]'.format(i) if arrays[idx] > 1 else ''}\
>        % for j in range(in_type.columns):
>          % for k in range(in_type.rows):
> -         ${dvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(dvalues)] if in_type.type.name == 'double' else hvalues[(d + (i * (in_type.columns) + j) * (in_type.rows) + k) % len(hvalues)]}\
> +	  ## Careful: these are the values for the VBO type, not the uniform type. If we use the hex format they should match or the run will fail.
> +          ${gl_types_values[gl_types[idx]][(d + (i * in_type.columns + j) * in_type.rows + k) % len(gl_types_values[gl_types[idx]])]}\
>          % endfor
>        % endfor
>
On Wed, 2016-06-29 at 09:48 -0700, Dylan Baker wrote:
> Quoting Andres Gomez (2016-06-14 14:37:00)
> > Signed-off-by: Andres Gomez <agomez@igalia.com>
> > ---
> >  generated_tests/gen_vs_in_fp64.py                  | 266
> > +++++++++++++++++----
> >  .../gen_vs_in_fp64/regular.shader_test.mako        |  21 +-
> >  2 files changed, 222 insertions(+), 65 deletions(-)
> > 
> > diff --git a/generated_tests/gen_vs_in_fp64.py
> > b/generated_tests/gen_vs_in_fp64.py
> > index 88c4952..af7e81b 100644
> > --- a/generated_tests/gen_vs_in_fp64.py
> > +++ b/generated_tests/gen_vs_in_fp64.py
> > @@ -72,47 +72,165 @@ DOUBLE_NORMAL_VALUES   =
> > ['0xffefffffffffffff', # Negative maximum normalized
> >                            '0x4b1e35ed24eb6496', # +7.23401345e+53
> >                            '0x7fefffffffffffff'] # Positive maximum
> > normalized
> >  
> > -DSCALAR_TYPES          = [glsltypes.DOUBLE]
> > -
> > -DVEC_TYPES             = [glsltypes.DVEC2, glsltypes.DVEC3,
> > glsltypes.DVEC4]
> > -
> > -DMAT_TYPES             = [glsltypes.DMAT2, glsltypes.DMAT2X3,
> > glsltypes.DMAT2X4,
> > +FLOAT_POS_ZERO         = ['0x00000000'] #  0.0
> 
> Our python style is to put at least two spaces between the last
> interpreted character and the # for inline comments:
> ex: FLOAT_POS_ZERO         = ['0x00000000']  #  0.0

I will correct this.

[snip]

> The only other concern that I have is that this generator takes 45
> seconds after this patch to run, and it's not because any piece is
> particularly slow, its just the sheer number of tests this generator
> creates (~18000), which accounts for 1/3 of piglit's tests. While I
> appreciate the comprehensiveness of this approach, I wonder if it's
> more
> than we really want in standard piglit profiles, and whether we would
> be
> better off cutting this down to a subset and calling it good enough.

I think you are quite right on this.

In any case, this patch is not adding more tests than the ones that are
already there before it. The next patch in the series adds some more
tests, though.

I think I can reduce a lot the amount of tests used to check the
correct implementation of GL_ARB_vertex_attrib_64bit since it is true
that, probably, although all are different, many can be considered
redundant on the functionality checked.

WDYT about landing this series as is and I send a follow up patch to
reduce the amount of tests? Or you would rather change already this
series to include the reduction too?

Thanks for taking a look at this!
On Thu, 2016-06-30 at 11:22 -0700, Dylan Baker wrote:
> Quoting Andres Gomez (2016-06-30 02:30:31)

[snip]

> > I think you are quite right on this.
> > 
> > In any case, this patch is not adding more tests than the ones that
> > are
> > already there before it. The next patch in the series adds some
> > more
> > tests, though.
> > 
> > I think I can reduce a lot the amount of tests used to check the
> > correct implementation of GL_ARB_vertex_attrib_64bit since it is
> > true
> > that, probably, although all are different, many can be considered
> > redundant on the functionality checked.
> > 
> > WDYT about landing this series as is and I send a follow up patch
> > to
> > reduce the amount of tests? Or you would rather change already this
> > series to include the reduction too?
> 
> I'm okay with following up with a reduction in the tests.

May I have, then, a R-b from you at least for the patches 4 and 5 of
this series?

> One of the other things I thought about yesterday, is maybe a good
> compromise would be to a add a filter rule to quick.py that reduces
> the
> number of tests, but let the generator create all of the tests, that
> gives the ability to get a comprehensive run, but it also allows the
> normal testing process to still be relatively quick.

Sounds reasonable.