[Piglit] [PATCH 10/24] gen_texture_lod_tests.py: Split templates

Dylan Baker baker.dylan.c at gmail.com
Mon Nov 24 09:58:10 PST 2014


Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 generated_tests/CMakeLists.txt                     |   6 +-
 generated_tests/gen_texture_lod_tests.py           | 146 +++++----------------
 .../frag_lod.glsl_parser_test.mako                 |  16 +++
 .../gen_texture_lod_tests/tex_grad.frag.mako       |  17 +++
 .../gen_texture_lod_tests/tex_grad.vert.mako       |  20 +++
 5 files changed, 94 insertions(+), 111 deletions(-)
 create mode 100644 generated_tests/templates/gen_texture_lod_tests/frag_lod.glsl_parser_test.mako
 create mode 100644 generated_tests/templates/gen_texture_lod_tests/tex_grad.frag.mako
 create mode 100644 generated_tests/templates/gen_texture_lod_tests/tex_grad.vert.mako

diff --git a/generated_tests/CMakeLists.txt b/generated_tests/CMakeLists.txt
index 8b62807..1ca586e 100644
--- a/generated_tests/CMakeLists.txt
+++ b/generated_tests/CMakeLists.txt
@@ -76,7 +76,11 @@ piglit_make_generated_tests(
 	interpolation-qualifier-built-in-variable.py)
 piglit_make_generated_tests(
 	texture_lod_tests.list
-	gen_texture_lod_tests.py)
+	gen_texture_lod_tests.py
+	templates/gen_texture_lod_tests/tex_grad.vert.mako
+	templates/gen_texture_lod_tests/tex_grad.frag.mako
+	templates/gen_texture_lod_tests/frag_lod.glsl_parser_test.mako
+	)
 piglit_make_generated_tests(
 	outerproduct_invalid_params.list
 	gen_outerproduct_invalid_params.py)
diff --git a/generated_tests/gen_texture_lod_tests.py b/generated_tests/gen_texture_lod_tests.py
index 6101341..ebedc61 100644
--- a/generated_tests/gen_texture_lod_tests.py
+++ b/generated_tests/gen_texture_lod_tests.py
@@ -22,9 +22,11 @@
 
 from __future__ import print_function
 import os
-import textwrap
 import collections
-import mako.template
+
+from templates import template_dir
+
+TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
 
 Parameters = collections.namedtuple(
     'Parameters', ['coord', 'grad', 'dimensions', 'mode'])
@@ -55,131 +57,55 @@ GRAD_TESTS = LOD_TESTS + [
 
 
 def get_extensions(mode):
-    """ If this test uses GL_ARB_texture_rectangle add it"""
+    """ If this test uses GL_ARB_texture_rectangle add it
+
+    GL_ARB_texture_rectangle is an odd extension, it is on by default, so don't
+    generate a #extension in the shader, just in the config block.
+
+    """
     if 'Rect' in mode:
         return 'GL_ARB_shader_texture_lod GL_ARB_texture_rectangle'
     return 'GL_ARB_shader_texture_lod'
 
 
-def gen_frag_lod_test(parameter, filename):
-    """ Generate fragment shader LOD tests """
-    template = mako.template.Template(textwrap.dedent("""
-    /* [config]
-     * expect_result: pass
-     * glsl_version: 1.10
-     * require_extensions: GL_ARB_shader_texture_lod
-     * [end config]
-     */
-    #extension GL_ARB_shader_texture_lod: require
-
-    uniform sampler${param.dimensions} s;
-    varying ${param.coord} coord;
-    varying float lod;
-
-    void main()
-    {
-      gl_FragColor = ${param.mode}Lod(s, coord, lod);
-    }
-    """))
-    with open(filename, 'w+') as f:
-        f.write(template.render_unicode(param=parameter))
-
-
-def gen_frag_grad_test(parameter, filename):
-    """ Generate fragment shader gradient tests """
-    template = mako.template.Template(textwrap.dedent("""
-    /* [config]
-     * expect_result: pass
-     * glsl_version: 1.10
-     * require_extensions: ${extensions}
-     * [end config]
-     */
-    #extension GL_ARB_shader_texture_lod: require
-
-    uniform sampler${param.dimensions} s;
-    varying ${param.coord} coord;
-    varying ${param.grad} dPdx;
-    varying ${param.grad} dPdy;
-
-    void main()
-    {
-      gl_FragColor = ${param.mode}GradARB(s, coord, dPdx, dPdy);
-    }
-    """))
-    with open(filename, 'w+') as f:
-        f.write(template.render_unicode(
-            param=parameter,
-            extensions=get_extensions(parameter.mode)))
-
-
-def gen_vert_grad_test(parameter, filename):
-    """ Generate vertex shader gradient tests """
-    template = mako.template.Template(textwrap.dedent("""
-    /* [config]
-     * expect_result: pass
-     * glsl_version: 1.10
-     * require_extensions: ${extensions}
-     * [end config]
-     */
-    #extension GL_ARB_shader_texture_lod: require
-
-    uniform sampler${param.dimensions} s;
-    attribute vec4 pos;
-    attribute ${param.coord} coord;
-    attribute ${param.grad} dPdx;
-    attribute ${param.grad} dPdy;
-    varying vec4 color;
-
-    void main()
-    {
-      gl_Position = pos;
-      color = ${param.mode}GradARB(s, coord, dPdx, dPdy);
-    }
-    """))
-    with open(filename, 'w+') as f:
-        f.write(template.render_unicode(
-            param=parameter,
-            extensions=get_extensions(parameter.mode)))
-
-
 def main():
     """ Main function
 
     Writes tests to generated_tests/spec/arb_shader_texture_lod/ directory
 
     """
-    try:
-        os.makedirs('spec/arb_shader_texture_lod/compiler')
-    except OSError:
-        pass
+    dirname = 'spec/arb_shader_texture_lod/compiler'
+    if not os.path.exists(dirname):
+        os.makedirs(dirname)
 
     for params in LOD_TESTS:
-        name = ("spec/arb_shader_texture_lod/compiler/"
-                "tex_lod-{mode}-{dimensions}-{coord}.frag".format(
-                    mode=params.mode,
-                    dimensions=params.dimensions,
-                    coord=params.coord))
+        name = os.path.join(
+            dirname,
+            "tex_lod-{mode}-{dimensions}-{coord}.frag".format(
+                mode=params.mode,
+                dimensions=params.dimensions,
+                coord=params.coord))
         print(name)
-        gen_frag_lod_test(params, name)
+        with open(name, 'w+') as f:
+            f.write(TEMPLATES.get_template(
+                'frag_lod.glsl_parser_test.mako').render_unicode(param=params))
 
     for params in GRAD_TESTS:
         # Generate fragment shader test
-        name = ("spec/arb_shader_texture_lod/compiler/"
-                "tex_grad-{mode}-{dimensions}-{coord}.frag".format(
-                    mode=params.mode,
-                    dimensions=params.dimensions,
-                    coord=params.coord))
-        print(name)
-        gen_frag_grad_test(params, name)
-
-        # Generate vertex shader test
-        name = ("spec/arb_shader_texture_lod/compiler/"
-                "tex_grad-{mode}-{dimensions}-{coord}.vert".format(
-                    mode=params.mode,
-                    dimensions=params.dimensions,
-                    coord=params.coord))
-        print(name)
-        gen_vert_grad_test(params, name)
+        name = os.path.join(
+            dirname,
+            "tex_grad-{mode}-{dimensions}-{coord}".format(
+                mode=params.mode,
+                dimensions=params.dimensions,
+                coord=params.coord))
+
+        for stage in ['frag', 'vert']:
+            print('{}.{}'.format(name, stage))
+            with open('{}.{}'.format(name, stage), 'w+') as f:
+                f.write(TEMPLATES.get_template(
+                    'tex_grad.{}.mako'.format(stage)).render_unicode(
+                        param=params,
+                        extensions=get_extensions(params.mode)))
 
 
 if __name__ == '__main__':
diff --git a/generated_tests/templates/gen_texture_lod_tests/frag_lod.glsl_parser_test.mako b/generated_tests/templates/gen_texture_lod_tests/frag_lod.glsl_parser_test.mako
new file mode 100644
index 0000000..3c3df9c
--- /dev/null
+++ b/generated_tests/templates/gen_texture_lod_tests/frag_lod.glsl_parser_test.mako
@@ -0,0 +1,16 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.10
+ * require_extensions: GL_ARB_shader_texture_lod
+ * [end config]
+ */
+#extension GL_ARB_shader_texture_lod : require
+
+uniform sampler${param.dimensions} s;
+varying ${param.coord} coord;
+varying float lod;
+
+void main()
+{
+  gl_FragColor = ${param.mode}Lod(s, coord, lod);
+}
diff --git a/generated_tests/templates/gen_texture_lod_tests/tex_grad.frag.mako b/generated_tests/templates/gen_texture_lod_tests/tex_grad.frag.mako
new file mode 100644
index 0000000..d807c83
--- /dev/null
+++ b/generated_tests/templates/gen_texture_lod_tests/tex_grad.frag.mako
@@ -0,0 +1,17 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.10
+ * require_extensions: ${extensions}
+ * [end config]
+ */
+#extension GL_ARB_shader_texture_lod : require
+
+uniform sampler${param.dimensions} s;
+varying ${param.coord} coord;
+varying ${param.grad} dPdx;
+varying ${param.grad} dPdy;
+
+void main()
+{
+  gl_FragColor = ${param.mode}GradARB(s, coord, dPdx, dPdy);
+}
diff --git a/generated_tests/templates/gen_texture_lod_tests/tex_grad.vert.mako b/generated_tests/templates/gen_texture_lod_tests/tex_grad.vert.mako
new file mode 100644
index 0000000..7d7aef3
--- /dev/null
+++ b/generated_tests/templates/gen_texture_lod_tests/tex_grad.vert.mako
@@ -0,0 +1,20 @@
+/* [config]
+ * expect_result: pass
+ * glsl_version: 1.10
+ * require_extensions: ${extensions}
+ * [end config]
+ */
+#extension GL_ARB_shader_texture_lod : require
+
+uniform sampler${param.dimensions} s;
+attribute vec4 pos;
+attribute ${param.coord} coord;
+attribute ${param.grad} dPdx;
+attribute ${param.grad} dPdy;
+varying vec4 color;
+
+void main()
+{
+  gl_Position = pos;
+  color = ${param.mode}GradARB(s, coord, dPdx, dPdy);
+}
-- 
2.1.3



More information about the Piglit mailing list