From 5f2ac0c9debea21cfe5f44e2244058df8df705d1 Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Mon, 24 Nov 2025 12:47:51 +0100 Subject: [PATCH] r600: fix cayman msaa shading behavior The functionality was working properly at glMinSampleShading(0.) and glMinSampleShading(1.). The issue was with the intermediary values. This change makes this function compatible with the evergreen setup. Note: this was one of the few functionalities which were working properly on evergreen but not on cayman. Here are the tests fixed: spec/arb_sample_shading/samplemask 4 all/0.500000 partition: fail pass spec/arb_sample_shading/samplemask 4/0.500000 partition: fail pass spec/arb_sample_shading/samplemask 6 all/0.250000 partition: fail pass spec/arb_sample_shading/samplemask 6 all/0.500000 partition: fail pass spec/arb_sample_shading/samplemask 6/0.250000 partition: fail pass spec/arb_sample_shading/samplemask 6/0.500000 partition: fail pass spec/arb_sample_shading/samplemask 8 all/0.250000 partition: fail pass spec/arb_sample_shading/samplemask 8 all/0.500000 partition: fail pass spec/arb_sample_shading/samplemask 8/0.250000 partition: fail pass spec/arb_sample_shading/samplemask 8/0.500000 partition: fail pass deqp-gles31/functional/shaders/sample_variables/sample_mask_in/bit_count_per_two_samples/multisample_rbo_4: fail pass deqp-gles31/functional/shaders/sample_variables/sample_mask_in/bit_count_per_two_samples/multisample_rbo_8: fail pass deqp-gles31/functional/shaders/sample_variables/sample_mask_in/bit_count_per_two_samples/multisample_texture_4: fail pass deqp-gles31/functional/shaders/sample_variables/sample_mask_in/bit_count_per_two_samples/multisample_texture_8: fail pass Fixes: f7796a966d20 ("radeonsi: add basic code for overrasterization") Signed-off-by: Patrick Lerda --- src/gallium/drivers/r600/cayman_msaa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gallium/drivers/r600/cayman_msaa.c b/src/gallium/drivers/r600/cayman_msaa.c index ba2ff12c9f1..515ab6d33cd 100644 --- a/src/gallium/drivers/r600/cayman_msaa.c +++ b/src/gallium/drivers/r600/cayman_msaa.c @@ -226,7 +226,7 @@ void cayman_emit_msaa_state(struct radeon_cmdbuf *cs, int nr_samples, if (nr_samples > 1) { radeon_set_context_reg(cs, CM_R_028804_DB_EQAA, S_028804_MAX_ANCHOR_SAMPLES(log_samples) | - S_028804_PS_ITER_SAMPLES(log_ps_iter_samples) | + S_028804_PS_ITER_SAMPLES(log_ps_iter_samples ? log_samples : 0) | S_028804_MASK_EXPORT_NUM_SAMPLES(log_samples) | S_028804_ALPHA_TO_MASK_NUM_SAMPLES(log_samples) | S_028804_HIGH_QUALITY_INTERSECTIONS(1) |