Mesa (master): radeonsi: round ps_iter_samples in set_min_samples

Marek Olšák mareko at kemper.freedesktop.org
Thu May 24 17:42:06 UTC 2018


Module: Mesa
Branch: master
Commit: 07e02c8617ebdc7e4a729676dbd93d63b77bcd9d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=07e02c8617ebdc7e4a729676dbd93d63b77bcd9d

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue May 15 22:03:40 2018 -0400

radeonsi: round ps_iter_samples in set_min_samples

Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/drivers/radeonsi/si_state.c         | 6 ++++--
 src/gallium/drivers/radeonsi/si_state_shaders.c | 2 +-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 5bbf134b70..f4e29f68b2 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3412,8 +3412,7 @@ static void si_emit_msaa_config(struct si_context *sctx)
 		};
 		unsigned log_samples = util_logbase2(coverage_samples);
 		unsigned ps_iter_samples = si_get_ps_iter_samples(sctx);
-		unsigned log_ps_iter_samples =
-			util_logbase2(util_next_power_of_two(ps_iter_samples));
+		unsigned log_ps_iter_samples = util_logbase2(ps_iter_samples);
 
 		radeon_set_context_reg_seq(cs, R_028BDC_PA_SC_LINE_CNTL, 2);
 		radeon_emit(cs, sc_line_cntl |
@@ -3468,6 +3467,9 @@ static void si_set_min_samples(struct pipe_context *ctx, unsigned min_samples)
 {
 	struct si_context *sctx = (struct si_context *)ctx;
 
+	/* The hardware can only do sample shading with 2^n samples. */
+	min_samples = util_next_power_of_two(min_samples);
+
 	if (sctx->ps_iter_samples == min_samples)
 		return;
 
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 2e215b91ce..1b618502e8 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1414,7 +1414,7 @@ static inline void si_shader_selector_key(struct pipe_context *ctx,
 			if (sctx->ps_iter_samples > 1 &&
 			    sel->info.reads_samplemask) {
 				key->part.ps.prolog.samplemask_log_ps_iter =
-					util_logbase2(util_next_power_of_two(sctx->ps_iter_samples));
+					util_logbase2(sctx->ps_iter_samples);
 			}
 
 			if (rs->force_persample_interp &&




More information about the mesa-commit mailing list