mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02:00
nir/opt_varyings: always report progress when calling nir_remove_varying
It changes IO semantics even if it doesn't remove the instruction.
This commit is contained in:
parent
a1da74d3cc
commit
c1173f7a0b
6 changed files with 18 additions and 12 deletions
|
|
@ -2009,9 +2009,11 @@ remove_all_stores(struct linkage_info *linkage, unsigned i,
|
|||
|
||||
/* Remove all stores. */
|
||||
list_for_each_entry_safe(struct list_node, iter, &slot->producer.stores, head) {
|
||||
/* nir_remove_varying always makes progress. */
|
||||
*progress |= nir_progress_producer;
|
||||
|
||||
if (nir_remove_varying(iter->instr, linkage->consumer_stage)) {
|
||||
list_del(&iter->head);
|
||||
*progress |= nir_progress_producer;
|
||||
} else {
|
||||
if (has_xfb(iter->instr)) {
|
||||
*uses_xfb = true;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ TEST_F(nir_opt_varyings_test_dead_output, \
|
|||
store_output(b1, VARYING_SLOT_##slot, 0, nir_type_float##bitsize, \
|
||||
nir_imm_floatN_t(b1, 0, bitsize), 0); \
|
||||
\
|
||||
opt_varyings(); \
|
||||
ASSERT_EQ(opt_varyings(), nir_progress_producer); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == VARYING_BIT_##slot); \
|
||||
ASSERT_TRUE(shader_contains_instr(b1, &intr->instr)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(intr).no_varying == \
|
||||
|
|
@ -69,8 +69,13 @@ TEST_F(nir_opt_varyings_test_dead_output, \
|
|||
if (index == VARYING_SLOT_FOGC || index == VARYING_SLOT_PRIMITIVE_ID || \
|
||||
index == VARYING_SLOT_TEX0 || index == VARYING_SLOT_VAR0_16BIT) \
|
||||
index = VARYING_SLOT_VAR0; \
|
||||
\
|
||||
if (index == VARYING_SLOT_POS || index == VARYING_SLOT_PSIZ || \
|
||||
index == VARYING_SLOT_CLIP_VERTEX) \
|
||||
ASSERT_EQ(opt_varyings(), 0); \
|
||||
else \
|
||||
ASSERT_EQ(opt_varyings(), nir_progress_producer); \
|
||||
\
|
||||
ASSERT_TRUE(opt_varyings() == 0); \
|
||||
if (index >= VARYING_SLOT_VAR0_16BIT) { \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written_16bit == \
|
||||
BITFIELD_BIT(index - VARYING_SLOT_VAR0_16BIT)); \
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ TEST_F(nir_opt_varyings_test_prop_const, \
|
|||
SHADER_CONST_OUTPUT(producer_stage, consumer_stage, slot, comp, type, bitsize, value, value) \
|
||||
\
|
||||
if (nir_slot_is_sysval_output((gl_varying_slot)pindex, MESA_SHADER_##consumer_stage)) { \
|
||||
ASSERT_TRUE(opt_varyings() & nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
} else { \
|
||||
|
|
@ -100,7 +100,7 @@ TEST_F(nir_opt_varyings_test_prop_const, \
|
|||
if (store3) \
|
||||
nir_intrinsic_set_io_xfb(store3, xfb); \
|
||||
\
|
||||
ASSERT_TRUE(opt_varyings() == nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
ASSERT_TRUE(b2->shader->info.inputs_read == 0 && \
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ TEST_F(nir_opt_varyings_test_prop_ubo, \
|
|||
SHADER_UBO_OUTPUT(producer_stage, consumer_stage, slot, comp, type, bitsize, 1, 1) \
|
||||
\
|
||||
if (nir_slot_is_sysval_output((gl_varying_slot)pindex, MESA_SHADER_##consumer_stage)) { \
|
||||
ASSERT_TRUE(opt_varyings() & nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
} else { \
|
||||
|
|
@ -100,7 +100,7 @@ TEST_F(nir_opt_varyings_test_prop_ubo, \
|
|||
if (store3) \
|
||||
nir_intrinsic_set_io_xfb(store3, xfb); \
|
||||
\
|
||||
ASSERT_TRUE(opt_varyings() == nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
ASSERT_TRUE(b2->shader->info.inputs_read == 0 && \
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ TEST_F(nir_opt_varyings_test_prop_uniform, \
|
|||
SHADER_UNIFORM_OUTPUT(producer_stage, consumer_stage, slot, comp, type, bitsize, 1, 1) \
|
||||
\
|
||||
if (nir_slot_is_sysval_output((gl_varying_slot)pindex, MESA_SHADER_##consumer_stage)) { \
|
||||
ASSERT_TRUE(opt_varyings() & nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
} else { \
|
||||
|
|
@ -100,7 +100,7 @@ TEST_F(nir_opt_varyings_test_prop_uniform, \
|
|||
if (store3) \
|
||||
nir_intrinsic_set_io_xfb(store3, xfb); \
|
||||
\
|
||||
ASSERT_TRUE(opt_varyings() == nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
ASSERT_TRUE(b2->shader->info.inputs_read == 0 && \
|
||||
|
|
|
|||
|
|
@ -60,12 +60,11 @@ TEST_F(nir_opt_varyings_test_prop_uniform_expr, \
|
|||
{ \
|
||||
SHADER_UNI_EXPR_OUTPUT(producer_stage, consumer_stage, slot, comp, type, bitsize, 1, 1) \
|
||||
\
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
if (nir_slot_is_sysval_output((gl_varying_slot)pindex, MESA_SHADER_##consumer_stage)) { \
|
||||
ASSERT_TRUE(opt_varyings() & nir_progress_consumer); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
} else { \
|
||||
ASSERT_TRUE(opt_varyings() == (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == 0 && \
|
||||
b1->shader->info.patch_outputs_written == 0 && \
|
||||
b1->shader->info.outputs_written_16bit == 0); \
|
||||
|
|
@ -100,7 +99,7 @@ TEST_F(nir_opt_varyings_test_prop_uniform_expr, \
|
|||
if (store3) \
|
||||
nir_intrinsic_set_io_xfb(store3, xfb); \
|
||||
\
|
||||
ASSERT_TRUE(opt_varyings() == nir_progress_consumer); \
|
||||
ASSERT_EQ(opt_varyings(), (nir_progress_producer | nir_progress_consumer)); \
|
||||
ASSERT_TRUE(b1->shader->info.outputs_written == BITFIELD64_BIT(pindex)); \
|
||||
ASSERT_TRUE(nir_intrinsic_io_semantics(store).no_varying); \
|
||||
ASSERT_TRUE(b2->shader->info.inputs_read == 0 && \
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue