[Mesa-dev] [PATCH 3/4] radeonsi: fix occlusion queries with 16x AA without FBO attachments on Stoney

Marek Olšák maraeo at gmail.com
Thu Jun 21 01:01:57 UTC 2018


From: Marek Olšák <marek.olsak at amd.com>

---
 src/gallium/drivers/radeonsi/si_state.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index cfe32bc7f5e..a7377f38745 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -1371,23 +1371,31 @@ static void si_emit_db_render_state(struct si_context *sctx)
 			S_028000_DEPTH_CLEAR_ENABLE(sctx->db_depth_clear) |
 			S_028000_STENCIL_CLEAR_ENABLE(sctx->db_stencil_clear);
 	}
 
 	/* DB_COUNT_CONTROL (occlusion queries) */
 	if (sctx->num_occlusion_queries > 0 &&
 	    !sctx->occlusion_queries_disabled) {
 		bool perfect = sctx->num_perfect_occlusion_queries > 0;
 
 		if (sctx->chip_class >= CIK) {
+			unsigned log_sample_rate = sctx->framebuffer.log_samples;
+
+			/* Stoney doesn't increment occlusion query counters
+			 * if the sample rate is 16x. Use 8x sample rate instead.
+			 */
+			if (sctx->family == CHIP_STONEY)
+				log_sample_rate = MIN2(log_sample_rate, 3);
+
 			db_count_control =
 				S_028004_PERFECT_ZPASS_COUNTS(perfect) |
-				S_028004_SAMPLE_RATE(sctx->framebuffer.log_samples) |
+				S_028004_SAMPLE_RATE(log_sample_rate) |
 				S_028004_ZPASS_ENABLE(1) |
 				S_028004_SLICE_EVEN_ENABLE(1) |
 				S_028004_SLICE_ODD_ENABLE(1);
 		} else {
 			db_count_control =
 				S_028004_PERFECT_ZPASS_COUNTS(perfect) |
 				S_028004_SAMPLE_RATE(sctx->framebuffer.log_samples);
 		}
 	} else {
 		/* Disable occlusion queries. */
-- 
2.17.1



More information about the mesa-dev mailing list