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

Reply via email to