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 <christian.gmeiner@gmail.com>
Acked-by: Lucas Stach <l.stach@pengutronix.de>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9305>
This commit is contained in:
Christian Gmeiner 2021-02-26 09:05:57 +01:00 committed by Marge Bot
parent 5705ecb6f4
commit cfd835b45a

View file

@ -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)