summaryrefslogtreecommitdiff
path: root/run.py
diff options
context:
space:
mode:
Diffstat (limited to 'run.py')
-rwxr-xr-xrun.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/run.py b/run.py
new file mode 100755
index 0000000..a667914
--- /dev/null
+++ b/run.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+
+from getopt import getopt, GetoptError
+import re
+import sys, os
+import subprocess
+
+def usage():
+ USAGE = """\
+Usage: %(progName)s [shader.frag] [shader.vert]
+
+Options:
+ -h, --help Show this message
+"""
+ print USAGE % {'progName': sys.argv[0]}
+ sys.exit(1)
+
+def run_test(filename):
+ command = ['/home/anholt/src/piglit/bin/glslparsertest',
+ filename,
+ 'pass']
+
+ env_add = {}
+ env_add["shader_precompile"] = "true"
+ env_add["INTEL_DEBUG"] = "vs,wm"
+
+ env = os.environ.copy()
+ env.update(env_add)
+
+ try:
+ p = subprocess.Popen(
+ command,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env=env)
+ except:
+ print filename + " FAIL"
+ return
+
+ try:
+ (stdout, stderr) = p.communicate()
+ results = stdout + stderr
+ except KeyboardInterrupt:
+ exit(1)
+ except:
+ print filename + " FAIL "
+ return
+
+ with open(filename + '.out', 'w') as file:
+ file.write(results)
+
+ current_type = 'UNKNOWN'
+ counts = {}
+ lines = list(results.split('\n'))
+
+ re_fs_8 = re.compile("^Native code for fragment.*8-wide")
+ re_fs_16 = re.compile("^Native code for fragment.*16-wide")
+ re_vs = re.compile("^Native code for vertex")
+ re_align = re.compile("{ align")
+ counts["vs "] = 0
+ counts["fs8 "] = 0
+ counts["fs16"] = 0
+ for line in lines:
+ if (re.search(re_vs, line)):
+ current_type = "vs "
+ elif (re.search(re_fs_8, line)):
+ current_type = "fs8 "
+ elif (re.search(re_fs_16, line)):
+ current_type = "fs16"
+ elif (re.search(re_align, line)):
+ counts[current_type] = counts[current_type] + 1
+
+ for t in counts:
+ if counts[t] != 0:
+ print filename + " " + t + ": " + str(counts[t])
+ sys.stdout.flush()
+
+def main():
+ try:
+ option_list = [
+ "help",
+ ]
+ options, args = getopt(sys.argv[1:], "h", option_list)
+ except GetoptError:
+ usage()
+
+ for name, value in options:
+ if name in ('-h', '--help'):
+ usage()
+
+ if len(args) < 1:
+ usage()
+
+ for filename in args:
+ run_test(filename)
+
+if __name__ == "__main__":
+ main()