On Saturday, June 06, 2015 07:11:26 PM Kenneth Graunke wrote: > Hi all, > > This patch series ports all vpfp-generic tests to shader_runner, > and then deletes vpfp-generic. > > A bit of history: > - vpfp-generic was introduced by Nicolai Hähnle in 2009, as a generic > ARB_vertex|fragment_program test runner. > - shader_runner was introduced by Ian Romanick in 2010, as a generic > GLSL shader runner. > - shader_runner gained ARB program support in 2011 (courtesy of Eric Anholt). > > At this point, vpfp-generic is fairly redundant - shader_runner can do > everything we need, and is much more widespread (12000+ tests). I've > been meaning to delete it for a few years, but never got around to it. > > One difference is that the new tests don't glClear() before drawing. Since > they draw the entire window, it's pretty unnecessary, and just makes the > tests harder to debug. Many shader_runner tests don't bother clearing.
I've gone ahead and added the clears back in, based on everyone's feedback. The original tests actually inspected the expected color - if a component was > 0.5, it used 0.0 as the clear color; otherwise it used 0.0. That ensured that the clear color was always different than the expected value. Which seems useful, and perhaps hard to replicate in a completely generic mechanism in shader_runner. The new shader_runner tests should be functionally equivalent to the old ones. I've gone ahead and pushed them since I don't think anybody actually wants to review these boring changes. Here is the updated python script that handles clears, too: #! /usr/bin/python3 import re import sys template = '''{comments}[require] GL >= 1.3 ARB_vertex_program ARB_fragment_program [vertex program] {vptext} [fragment program] {fptext} [test] ortho 0 1 0 1 {script}''' def convert(infile): with open(infile, 'r') as f: vpfp = f.read() vpfp = re.sub('^;', '#', vpfp, flags=re.MULTILINE) doublebang = vpfp.find('!!') comments = vpfp[0:doublebang] vpfp = vpfp[doublebang:] parse = re.match('(^!!ARBvp1.0$.*^END$)\s*(^!!ARBfp1.0$.*^END$)\s*!!test\n(.*)', vpfp, re.MULTILINE | re.DOTALL) vptext, fptext, vpfp_test = parse.groups() script = '' for line in vpfp_test.splitlines(): line = ' '.join(line.split()) # collapse whitespace if line == '' or line == '!!test': continue parse = re.match('^expected ([^\s]+) ([^\s]+) ([^\s]+) ([^\s]+)', line) if parse is not None: params = parse.groups() clear_color = ["0.0" if float(x) > 0.5 else "1.0" for x in params] script += 'clear color {} {} {} {}\nclear\n'.format(*clear_color) script += 'draw rect 0 0 1 1\nprobe all rgba {} {} {} {}\n'.format(*params) continue parse = re.match('^(fragment|vertex).(local|environment)\[([0-9]+)\] ([^\s]+) ([^\s]+) ([^\s]+) ([^\s]+)', line) if parse is not None: params = parse.groups() script += 'parameter {}_{}p {} ({}, {}, {}, {})\n'.format(params[1].replace('environment', 'env'), params[0][0], *params[2:]) continue parse = re.match('^texcoord\[([0-9]+)\] ([^\s]+) ([^\s]+) ([^\s]+) ([^\s]+)', line) if parse is not None: script += 'texcoord {} ({}, {}, {}, {})\n'.format(*parse.groups()) continue raise Exception("unknown line: " + line) print(template.format(comments=comments, vptext=vptext, fptext=fptext, script=script)) if __name__ == '__main__': convert(sys.argv[1])
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/piglit