summaryrefslogtreecommitdiff
path: root/generated_tests/gen_builtin_uniform_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'generated_tests/gen_builtin_uniform_tests.py')
-rw-r--r--generated_tests/gen_builtin_uniform_tests.py67
1 files changed, 54 insertions, 13 deletions
diff --git a/generated_tests/gen_builtin_uniform_tests.py b/generated_tests/gen_builtin_uniform_tests.py
index 0b664c3c9..13b65831e 100644
--- a/generated_tests/gen_builtin_uniform_tests.py
+++ b/generated_tests/gen_builtin_uniform_tests.py
@@ -353,6 +353,19 @@ class ShaderTest(object):
"""
self._signature = signature
self._test_vectors = test_vectors
+
+ num_tests = len(self._test_vectors)
+
+ # Size of the rectangles drawn by the test.
+ self.rect_width = 4
+ self.rect_height = 4
+ # shader_runner currently always makes a 250x250 window, but
+ # we may want to change that some day.
+ self.win_width = 250
+ self.win_height = 250
+ self.tests_per_row = (self.win_width // self.rect_width)
+ self.test_rows = (self.win_height // self.rect_height)
+
if use_if:
self._comparator = BoolIfComparator(signature)
elif signature.rettype.base_type == glsl_bool:
@@ -367,17 +380,21 @@ class ShaderTest(object):
def glsl_version(self):
return self._signature.version_introduced
- def draw_command(self):
- return 'draw rect -1 -1 2 2\n'
+ def draw_command(self, test_num):
+ x = (test_num % self.tests_per_row) * self.rect_width
+ y = (test_num // self.tests_per_row) * self.rect_height
+ assert(y < self.test_rows)
+ return 'draw rect ortho {0} {1} {2} {3}\n'.format(x, y,
+ self.rect_width,
+ self.rect_height)
def probe_command(self, test_num, probe_vector):
- # Note: shader_runner uses a 250x250 window so we must
- # ensure that test_num <= 250.
- return 'probe rgb {0} 0 {1} {2} {3} {4}\n'.format(test_num % 250,
- probe_vector[0],
- probe_vector[1],
- probe_vector[2],
- probe_vector[3])
+ return 'probe rect rgba ({0}, {1}, {2}, {3}) ({4}, {5}, {6}, {7})\n'.format(
+ (test_num % self.tests_per_row) * self.rect_width,
+ (test_num // self.tests_per_row) * self.rect_height,
+ self.rect_width,
+ self.rect_height,
+ probe_vector[0], probe_vector[1], probe_vector[2], probe_vector[3])
def make_additional_requirements(self):
"""Return a string that should be included in the test's
@@ -431,6 +448,13 @@ class ShaderTest(object):
"""
return None
+ def needs_probe_per_draw(self):
+ """Returns whether the test needs the probe to be immediately after each
+
+ draw call.
+ """
+ return False
+
def make_test_shader(self, additional_declarations, prefix_statements,
output_var, suffix_statements):
"""Generate the shader code necessary to test the built-in.
@@ -482,9 +506,15 @@ class ShaderTest(object):
i, shader_runner_format(
column_major_values(test_vector.arguments[i])))
test += self._comparator.draw_test(test_vector,
- self.draw_command())
- test += self.probe_command(test_num,
- self._comparator.result_vector(test_vector))
+ self.draw_command(test_num))
+ if self.needs_probe_per_draw():
+ result_color = self._comparator.result_vector(test_vector)
+ test += self.probe_command(test_num, result_color)
+
+ if not self.needs_probe_per_draw():
+ for test_num, test_vector in enumerate(self._test_vectors):
+ result_color = self._comparator.result_vector(test_vector)
+ test += self.probe_command(test_num, result_color)
return test
def filename(self):
@@ -680,9 +710,20 @@ fb tex 2d 0
'''.format(len(self._test_vectors))
- def draw_command(self):
+ def draw_command(self, test_num):
return 'compute 1 1 1\n'
+ def probe_command(self, test_num, probe_vector):
+ # Note: shader_runner uses a 250x250 window so we must
+ # ensure that test_num <= 250.
+ return 'probe rgb {0} 0 {1} {2} {3} {4}\n'.format(test_num % 250,
+ probe_vector[0],
+ probe_vector[1],
+ probe_vector[2],
+ probe_vector[3])
+ def needs_probe_per_draw(self):
+ return True
+
def all_tests():
for use_if in [False, True]:
for signature, test_vectors in sorted(test_suite.items()):