Makes two changes: - Use a namedtuple instead of a dictionary to represent functions (the sub elements of the funcs dict). This reduces the number of variables passed into the mako template - convert funcs into a set of tuples. Since the dictionary is never actually used as a dictionary (ie, to select a key's associated value), it is faster to use tuples.
Signed-off-by: Dylan Baker <[email protected]> --- generated_tests/gen_shader_bit_encoding_tests.py | 48 +++++++--------------- .../template.shader_test.mako | 12 +++--- 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/generated_tests/gen_shader_bit_encoding_tests.py b/generated_tests/gen_shader_bit_encoding_tests.py index 5cfb274..cbed383 100644 --- a/generated_tests/gen_shader_bit_encoding_tests.py +++ b/generated_tests/gen_shader_bit_encoding_tests.py @@ -24,6 +24,7 @@ from __future__ import print_function import struct import os +import collections from operator import neg from templates import template_file @@ -51,6 +52,10 @@ def vec4(f): return [f, f, f, f] +Functions = collections.namedtuple( + 'Functions', ['in_func', 'out_func', 'input_type', 'output_type']) + + # Don't test +inf or -inf, since we don't have a way to pass them via # shader_runner [test] sections. Don't test NaN, since it has many # representations. Don't test subnormal values, since hardware might @@ -74,30 +79,13 @@ test_data = { # output (expected) data to pass the shader. funcs = { - 'floatBitsToInt': { - 'in_func': lambda x: x, - 'out_func': floatbitstoint, - 'input': 'vec4', - 'output': 'ivec4' - }, - 'floatBitsToUint': { - 'in_func': lambda x: x, - 'out_func': floatbitstouint, - 'input': 'vec4', - 'output': 'uvec4' - }, - 'intBitsToFloat': { - 'in_func': floatbitstoint, - 'out_func': intbitstofloat, - 'input': 'ivec4', - 'output': 'vec4' - }, - 'uintBitsToFloat': { - 'in_func': floatbitstouint, - 'out_func': uintbitstofloat, - 'input': 'uvec4', - 'output': 'vec4' - } + ('floatBitsToInt', Functions(lambda x: x, floatbitstoint, 'vec4', 'ivec4')), + ('floatBitsToUint', Functions(lambda x: x, floatbitstouint, 'vec4', + 'uvec4')), + ('intBitsToFloat', Functions(floatbitstoint, intbitstofloat, 'ivec4', + 'vec4')), + ('uintBitsToFloat', Functions(floatbitstouint, uintbitstofloat, 'uvec4', + 'vec4')) } modifier_funcs = { @@ -129,12 +117,7 @@ def main(): version = requirement['version'] extensions = [requirement['extension']] if requirement['extension'] else [] - for func, attrib in funcs.iteritems(): - in_func = attrib['in_func'] - out_func = attrib['out_func'] - input_type = attrib['input'] - output_type = attrib['output'] - + for func, attrib in funcs: for execution_stage in ('vs', 'fs'): for in_modifier_func, modifier_func in modifier_funcs.iteritems(): # Modifying the sign of an unsigned number doesn't make sense. @@ -166,12 +149,9 @@ def main(): extensions=extensions, execution_stage=execution_stage, func=func, + funcs=attrib, modifier_func=modifier_func, in_modifier_func=in_modifier_func, - in_func=in_func, - out_func=out_func, - input_type=input_type, - output_type=output_type, test_data=test_data)) diff --git a/generated_tests/templates/gen_shader_bit_encoding_tests/template.shader_test.mako b/generated_tests/templates/gen_shader_bit_encoding_tests/template.shader_test.mako index 83eb567..75ead4c 100644 --- a/generated_tests/templates/gen_shader_bit_encoding_tests/template.shader_test.mako +++ b/generated_tests/templates/gen_shader_bit_encoding_tests/template.shader_test.mako @@ -10,8 +10,8 @@ ${extension} #extension ${extension}: enable % endfor -uniform ${input_type} given; -uniform ${output_type} expected; +uniform ${funcs.input_type} given; +uniform ${funcs.output_type} expected; out vec4 color; % endif @@ -40,8 +40,8 @@ void main() { #extension ${extension}: enable % endfor -uniform ${input_type} given; -uniform ${output_type} expected; +uniform ${funcs.input_type} given; +uniform ${funcs.output_type} expected; % else: in vec4 color; % endif @@ -78,8 +78,8 @@ vertex/float/2 # ${in_modifier_func}(INT_MIN) doesn't fit in a 32-bit int. Cannot test. % else: # ${name} -uniform ${input_type} given ${' '.join(str(in_func(d)) for d in data)} -uniform ${output_type} expected ${' '.join(str(out_func(modifier_func(in_func(d)))) for d in data)} +uniform ${funcs.input_type} given ${' '.join(str(funcs.in_func(d)) for d in data)} +uniform ${funcs.output_type} expected ${' '.join(str(funcs.out_func(modifier_func(funcs.in_func(d)))) for d in data)} draw arrays GL_TRIANGLE_FAN 0 4 probe all rgba 0.0 1.0 0.0 1.0 % endif -- 2.1.3 _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
