diff options
author | Timothy Arceri <tarceri@itsqueeze.com> | 2020-05-01 11:14:17 +1000 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-05-02 01:32:14 +0000 |
commit | c6a4c8ee1373a13df9ea88d4ef55da510074927d (patch) | |
tree | 1ec11afe3dc2c5ce0d9b66518f02e754bdec1e66 /generated_tests | |
parent | 7331a4ad24b004b6daefa0b2aebb475de5ee67da (diff) |
gen_variable_index_write_tests: stop arrays from being optimised away
Previously these tests would generate something that looked like
this:
mat3x3[3] dst_matrix = mat3x3[3](mat3x3(0.0), mat3x3(0.0), mat3x3(0.0));
dst_matrix[index] = src_matrix;
dst_matrix[index][1] = value;
gl_FrontColor = (distanceSqr(dst_matrix[index] * v, expect) < 4e-9)
? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
Because we are writing to and reading from the array with the same
uniform index Mesas NIR optimisations were smart enough to eliminate the
array altogether. With an upcoming Mesa improvement to eliminate dead
uniforms this was also causing the tests to fail because the uniform
index gets eliminated and the test can no longer set it.
With this change we add index2 which will be set to the same value as
index but only used when reading from the array. With this NIR can
no longer eliminate the array.
An example of the new code:
mat3x3[3] dst_matrix = mat3x3[3](mat3x3(0.0), mat3x3(0.0), mat3x3(0.0));
dst_matrix[index] = src_matrix;
dst_matrix[index][1] = value;
gl_FrontColor = (distanceSqr(dst_matrix[index2] * v, expect) < 4e-9)
? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0);
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/piglit/-/merge_requests/273>
Diffstat (limited to 'generated_tests')
3 files changed, 14 insertions, 2 deletions
diff --git a/generated_tests/gen_variable_index_write_tests.py b/generated_tests/gen_variable_index_write_tests.py index e1920fdbf..8b422730b 100644 --- a/generated_tests/gen_variable_index_write_tests.py +++ b/generated_tests/gen_variable_index_write_tests.py @@ -104,6 +104,16 @@ class TestParams(object): return '' @utils.lazy_property + def idx2(self): + if self.array_dim != 0: + if self.index_value == 'index': + return '[{}2]'.format(self.index_value) + else: + return '[{}]'.format(self.index_value) + else: + return '' + + @utils.lazy_property def test_vec(self): if self.matrix_dim == 2: return ["0.803161418975390", "0.852987140792140"] diff --git a/generated_tests/templates/gen_variable_index_write_tests/helpers.mako b/generated_tests/templates/gen_variable_index_write_tests/helpers.mako index 997d1ea33..f4236acfc 100644 --- a/generated_tests/templates/gen_variable_index_write_tests/helpers.mako +++ b/generated_tests/templates/gen_variable_index_write_tests/helpers.mako @@ -78,6 +78,7 @@ % if params.array_dim != 0: uniform int index; + uniform int index2; % endif % if params.value_type == 'float': @@ -148,7 +149,7 @@ void main() ${emit_transform(params)} % endif - gl_FragColor = (distanceSqr(dst_matrix${params.idx} * v, expect) < 4e-9) + gl_FragColor = (distanceSqr(dst_matrix${params.idx2} * v, expect) < 4e-9) ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0); } </%def> @@ -157,6 +158,7 @@ void main() % for i in params.test_sizes: % if params.array_dim != 0 and params.index_value == 'index': uniform int index ${i - 1} + uniform int index2 ${i - 1} % endif <% x_base = (i - 1) * (15 * params.matrix_dim + 10) %> diff --git a/generated_tests/templates/gen_variable_index_write_tests/vs.shader_test.mako b/generated_tests/templates/gen_variable_index_write_tests/vs.shader_test.mako index 06e539cfc..71dd55f42 100644 --- a/generated_tests/templates/gen_variable_index_write_tests/vs.shader_test.mako +++ b/generated_tests/templates/gen_variable_index_write_tests/vs.shader_test.mako @@ -52,7 +52,7 @@ void main() ${helpers.emit_transform(params)} % if params.mode != 'varying': - gl_FrontColor = (distanceSqr(dst_matrix${params.idx} * v, expect) < 4e-9) + gl_FrontColor = (distanceSqr(dst_matrix${params.idx2} * v, expect) < 4e-9) ? vec4(0.0, 1.0, 0.0, 1.0) : vec4(1.0, 0.0, 0.0, 1.0); % endif } |