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

Author: Marek Olšák <marek.ol...@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 <die...@nuetzel-hh.de>
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@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 &&

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to