[Piglit] [PATCH 1/3] generators: port vp-tex.sh to python

Dylan Baker baker.dylan.c at gmail.com
Mon Feb 29 22:15:43 UTC 2016


There are only whitespace differences between the python generator and
the bash generator.

Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
---
 generated_tests/.gitignore                        |  1 +
 generated_tests/gen_vp_tex.py                     | 92 +++++++++++++++++++++++
 generated_tests/templates/gen_vp_tex/arbvp.mako   | 29 +++++++
 generated_tests/templates/gen_vp_tex/helpers.mako | 53 +++++++++++++
 generated_tests/templates/gen_vp_tex/nvvp3.mako   | 31 ++++++++
 generated_tests/templates/gen_vp_tex/nvvp3_2.mako | 32 ++++++++
 6 files changed, 238 insertions(+)
 create mode 100644 generated_tests/gen_vp_tex.py
 create mode 100644 generated_tests/templates/gen_vp_tex/arbvp.mako
 create mode 100644 generated_tests/templates/gen_vp_tex/helpers.mako
 create mode 100644 generated_tests/templates/gen_vp_tex/nvvp3.mako
 create mode 100644 generated_tests/templates/gen_vp_tex/nvvp3_2.mako

diff --git a/generated_tests/.gitignore b/generated_tests/.gitignore
index 2885c15..ea30b21 100644
--- a/generated_tests/.gitignore
+++ b/generated_tests/.gitignore
@@ -1,2 +1,3 @@
 spec
+asmparsertest
 *.list
diff --git a/generated_tests/gen_vp_tex.py b/generated_tests/gen_vp_tex.py
new file mode 100644
index 0000000..8775c89
--- /dev/null
+++ b/generated_tests/gen_vp_tex.py
@@ -0,0 +1,92 @@
+# Copyright (c) 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 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 ARBvp tests.
+
+Based on a bash generator that performs the same function written by Ian
+Romanick.
+
+"""
+
+from __future__ import (
+    absolute_import, division, print_function, unicode_literals
+)
+import os
+
+from templates import template_dir
+from modules import utils
+
+TEMPLATES = template_dir(os.path.basename(os.path.splitext(__file__)[0]))
+
+
+def main():
+    """Main function. Generates tests."""
+    dirname = os.path.join('asmparsertest', 'shaders', 'ARBvp1.0')
+    utils.safe_makedirs(dirname)
+
+    targets_1 = ["1D", "2D", "3D", "CUBE", "RECT", "SHADOW1D", "SHADOW2D"]
+
+    # The ordering in this loop is wierd, it's an artifact of the growth of the
+    # original script and is required to ensure that the names of the tests
+    # don't change
+    for inst in ["TEX", "TXB", "TXD", "TXF", "TXL", "TXP", "TXQ"]:
+        i = 1
+        template = TEMPLATES.get_template('arbvp.mako')
+        for target in targets_1:
+            fname = os.path.join(dirname, "{}-{:0>2d}.txt".format(inst.lower(), i))
+            with open(fname, 'w') as f:
+                f.write(template.render_unicode(target=target, inst=inst))
+            print(fname)
+            i += 1
+
+        template = TEMPLATES.get_template('nvvp3.mako')
+        for target in targets_1:
+            fname = os.path.join(dirname, "{}-{:0>2d}.txt".format(inst.lower(), i))
+            with open(fname, 'w') as f:
+                f.write(template.render_unicode(target=target, inst=inst))
+            print(fname)
+            i += 1
+
+        template = TEMPLATES.get_template('nvvp3_2.mako')
+        for target in ["CUBE", "RECT"]:
+            fname = os.path.join(dirname, "{}-{:0>2d}.txt".format(inst.lower(), i))
+            with open(fname, 'w') as f:
+                f.write(template.render_unicode(target=target, inst=inst))
+            print(fname)
+            i += 1
+
+        template = TEMPLATES.get_template('nvvp3.mako')
+        fname = os.path.join(dirname, "{}-{:0>2d}.txt".format(inst.lower(), i))
+        with open(fname, 'w') as f:
+            f.write(template.render_unicode(target="SHADOWRECT", inst=inst))
+        print(fname)
+        i += 1
+
+        template = TEMPLATES.get_template('nvvp3_2.mako')
+        for target in ["SHADOW1D", "SHADOW2D", "SHADOWRECT"]:
+            fname = os.path.join(dirname, "{}-{:0>2d}.txt".format(inst.lower(), i))
+            with open(fname, 'w') as f:
+                f.write(template.render_unicode(target=target, inst=inst))
+            print(fname)
+            i += 1
+
+
+if __name__ == '__main__':
+    main()
diff --git a/generated_tests/templates/gen_vp_tex/arbvp.mako b/generated_tests/templates/gen_vp_tex/arbvp.mako
new file mode 100644
index 0000000..a0f5f70
--- /dev/null
+++ b/generated_tests/templates/gen_vp_tex/arbvp.mako
@@ -0,0 +1,29 @@
+## Copyright (c) 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 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.
+
+<%namespace name="helpers" file="helpers.mako"/>
+
+!!ARBvp1.0
+
+${helpers.require(target)}
+
+# FAIL - texture instructions not supported by GL_ARB_vertex_program
+${inst} result.color, vertex.texcoord[0], texture[0], ${target};
+END
diff --git a/generated_tests/templates/gen_vp_tex/helpers.mako b/generated_tests/templates/gen_vp_tex/helpers.mako
new file mode 100644
index 0000000..7b3ed28
--- /dev/null
+++ b/generated_tests/templates/gen_vp_tex/helpers.mako
@@ -0,0 +1,53 @@
+## Copyright (c) 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 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.
+<%! 
+  import re
+
+  _IS_NVVP3_FAIL = re.compile(r'(TEX|TX[BLP])')
+
+  def dedent(text):
+      return '\n'.join(l.lstrip() for l in text.splitlines())
+
+  def newlines(text):
+      return '\n'.join(l for l in text.splitlines() if l.strip())
+%>
+
+<%def name="require(target)" filter="dedent,newlines">
+  % if target.startswith("SHADOW"):
+    # REQUIRE GL_ARB_fragment_program_shadow
+    OPTION    ARB_fragment_program_shadow;
+    ## Remove "SHADOW" portion of string
+    <% target = target[len("SHADOW"):] %>
+  % endif
+
+  % if target == "RECT":
+    # REQUIRE GL_ARB_texture_rectangle
+  % elif target == "CUBE":
+    # REQUIRE GL_ARB_texture_cube_map
+  % elif target == "3D":
+    # REQUIRE GL_EXT_texture3D
+  % endif
+</%def>
+
+<%def name="nvvp3_fail(inst)" filter="dedent">
+  % if not _IS_NVVP3_FAIL.match(inst):
+    # FAIL - ${inst} not supported by GL_NV_vertex_program3
+  % endif
+</%def>
diff --git a/generated_tests/templates/gen_vp_tex/nvvp3.mako b/generated_tests/templates/gen_vp_tex/nvvp3.mako
new file mode 100644
index 0000000..db6dc19
--- /dev/null
+++ b/generated_tests/templates/gen_vp_tex/nvvp3.mako
@@ -0,0 +1,31 @@
+## Copyright (c) 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 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.
+
+<%namespace name="helpers" file="helpers.mako"/>
+
+!!ARBvp1.0
+
+# REQUIRE GL_NV_vertex_program3
+OPTION    NV_vertex_program3;
+${helpers.require(target)}
+
+${helpers.nvvp3_fail(inst)}
+${inst} result.color, vertex.texcoord[0], texture[0], ${target};
+END
diff --git a/generated_tests/templates/gen_vp_tex/nvvp3_2.mako b/generated_tests/templates/gen_vp_tex/nvvp3_2.mako
new file mode 100644
index 0000000..99d6b0f
--- /dev/null
+++ b/generated_tests/templates/gen_vp_tex/nvvp3_2.mako
@@ -0,0 +1,32 @@
+## Copyright (c) 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 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.
+
+<%namespace name="helpers" file="helpers.mako"/>
+
+!!ARBvp1.0
+
+# REQUIRE GL_NV_vertex_program3
+OPTION    NV_vertex_program3;
+${helpers.require(target)}
+
+${helpers.nvvp3_fail(inst)}
+OUTPUT    ${target} = result.color;
+${inst}   ${target}, vertex.texcoord[0], texture[0], ${target};
+END
-- 
2.7.2



More information about the Piglit mailing list