Module: Mesa Branch: master Commit: cfd835b45a8115d5c7a92d239aa6a22fe30f4915 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cfd835b45a8115d5c7a92d239aa6a22fe30f4915
Author: Christian Gmeiner <[email protected]> Date: Fri Feb 26 09:05:57 2021 +0100 etnaviv: extend lower ubo tests Test a full transformation path (load_uniform -> load_ubo -> load_uniform) and validate the load_uniform offset. Signed-off-by: Christian Gmeiner <[email protected]> Acked-by: Lucas Stach <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9305> --- .../drivers/etnaviv/tests/lower_ubo_tests.cpp | 30 +++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/etnaviv/tests/lower_ubo_tests.cpp b/src/gallium/drivers/etnaviv/tests/lower_ubo_tests.cpp index 4132b22eaad..2b9fa41062e 100644 --- a/src/gallium/drivers/etnaviv/tests/lower_ubo_tests.cpp +++ b/src/gallium/drivers/etnaviv/tests/lower_ubo_tests.cpp @@ -43,6 +43,7 @@ protected: nir_lower_ubo_test(); ~nir_lower_ubo_test(); + nir_intrinsic_instr *intrinsic(nir_intrinsic_op op); unsigned count_intrinsic(nir_intrinsic_op op); nir_builder b; @@ -68,6 +69,22 @@ nir_lower_ubo_test::~nir_lower_ubo_test() glsl_type_singleton_decref(); } +nir_intrinsic_instr * +nir_lower_ubo_test::intrinsic(nir_intrinsic_op op) +{ + nir_foreach_block(block, b.impl) { + nir_foreach_instr(instr, block) { + if (instr->type != nir_instr_type_intrinsic) + continue; + + nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr); + if (intr->intrinsic == op) + return intr; + } + } + return NULL; +} + unsigned nir_lower_ubo_test::count_intrinsic(nir_intrinsic_op op) { @@ -103,18 +120,19 @@ TEST_F(nir_lower_ubo_test, nothing_to_lower) TEST_F(nir_lower_ubo_test, basic) { - nir_ssa_def *index = nir_imm_int(&b, 0); nir_ssa_def *offset = nir_imm_int(&b, 4); + nir_load_uniform(&b, 1, 32, offset); - nir_load_ubo(&b, 1, 32, index, offset, .align_mul = 16, .align_offset = 0, .range_base = 0, .range = 8); - - nir_validate_shader(b.shader, NULL); + nir_lower_uniforms_to_ubo(b.shader, 16); + nir_opt_constant_folding(b.shader); ASSERT_TRUE(etna_nir_lower_ubo_to_uniform(b.shader)); nir_validate_shader(b.shader, NULL); + nir_opt_constant_folding(b.shader); - ASSERT_EQ(count_intrinsic(nir_intrinsic_load_ubo), 0); - ASSERT_EQ(count_intrinsic(nir_intrinsic_load_uniform), 1); + nir_intrinsic_instr *load_uniform = intrinsic(nir_intrinsic_load_uniform); + ASSERT_EQ(nir_src_as_uint(load_uniform->src[0]), 4); + ASSERT_EQ(intrinsic(nir_intrinsic_load_ubo), nullptr); } TEST_F(nir_lower_ubo_test, index_not_null) _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
