From c87ef90c61ec74ff7ea33279a801791f8004fcbd Mon Sep 17 00:00:00 2001 From: Nick Hamilton Date: Fri, 12 Dec 2025 15:57:56 +0000 Subject: [PATCH] pvr: Fix missing sample mask test instructions The sample mask test instructions were only being added if the sample mask was an input or no other discard test was being done. In the failing test cases, instructions to handle alpha to one and/or alpha to coverage were being added and the program marked as having a discard test. This would lead to the instructions for the sample mask test to not be added. The fix is to specifically check for whether the instructions for sample mask have been added instead of check for any discard test. Fix deqp: dEQP-VK.pipeline.monolithic.extended_dynamic_state.after_pipelines.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.after_pipelines.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.before_draw.large_static_rasterization_samples_off dEQP-VK.pipeline.monolithic.extended_dynamic_state.before_draw.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.before_draw.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.before_good_static.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.before_good_static.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.between_pipelines.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.between_pipelines.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.cmd_buffer_start.large_static_rasterization_samples_off dEQP-VK.pipeline.monolithic.extended_dynamic_state.cmd_buffer_start.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.cmd_buffer_start.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.three_draws_dynamic.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.three_draws_dynamic.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.two_draws_dynamic.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.two_draws_dynamic.single_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.two_draws_static.multi_sample_sample_mask_disable dEQP-VK.pipeline.monolithic.extended_dynamic_state.two_draws_static.single_sample_sample_mask_disable Signed-off-by: Nick Hamilton --- src/imagination/pco/pco_nir_pvfio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/imagination/pco/pco_nir_pvfio.c b/src/imagination/pco/pco_nir_pvfio.c index 2bc20384144..747ec2d4a8e 100644 --- a/src/imagination/pco/pco_nir_pvfio.c +++ b/src/imagination/pco/pco_nir_pvfio.c @@ -560,7 +560,7 @@ static bool lower_isp_fb(nir_builder *b, struct pfo_state *state) has_depth_feedback = true; } - if (!state->has_discards) { + if (!state->has_sample_check) { b->cursor = nir_after_instr(&state->last_discard_store->instr); nir_def *smp_msk = nir_ishl(b, nir_imm_int(b, 1), nir_load_sample_id(b)); @@ -572,6 +572,7 @@ static bool lower_isp_fb(nir_builder *b, struct pfo_state *state) state->last_discard_store = nir_build_store_reg(b, val, state->discard_cond_reg); + state->has_sample_check = true; state->has_discards = true; }