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

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Tue May 15 22:04:20 2018 -0400

radeonsi: set DB_EQAA.MAX_ANCHOR_SAMPLES correctly

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 | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index f4e29f68b2..3a7e928df5 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -3340,7 +3340,7 @@ static void si_emit_msaa_config(struct si_context *sctx)
                           S_028804_INCOHERENT_EQAA_READS(1) |
                           S_028804_INTERPOLATE_COMP_Z(1) |
                           S_028804_STATIC_ANCHOR_ASSOCIATIONS(1);
-       unsigned coverage_samples, color_samples;
+       unsigned coverage_samples, color_samples, z_samples;
 
        /* S: Coverage samples (up to 16x):
         * - Scan conversion samples (PA_SC_AA_CONFIG.MSAA_NUM_SAMPLES)
@@ -3386,10 +3386,17 @@ static void si_emit_msaa_config(struct si_context *sctx)
        if (sctx->framebuffer.nr_samples > 1) {
                coverage_samples = sctx->framebuffer.nr_samples;
                color_samples = sctx->framebuffer.nr_color_samples;
+
+               if (sctx->framebuffer.state.zsbuf) {
+                       z_samples = 
sctx->framebuffer.state.zsbuf->texture->nr_samples;
+                       z_samples = MAX2(1, z_samples);
+               } else {
+                       z_samples = coverage_samples;
+               }
        } else if (sctx->smoothing_enabled) {
-               coverage_samples = color_samples = SI_NUM_SMOOTH_AA_SAMPLES;
+               coverage_samples = color_samples = z_samples = 
SI_NUM_SMOOTH_AA_SAMPLES;
        } else {
-               coverage_samples = color_samples = 1;
+               coverage_samples = color_samples = z_samples = 1;
        }
 
        /* Required by OpenGL line rasterization.
@@ -3411,6 +3418,7 @@ static void si_emit_msaa_config(struct si_context *sctx)
                        8, /* 16x MSAA */
                };
                unsigned log_samples = util_logbase2(coverage_samples);
+               unsigned log_z_samples = util_logbase2(z_samples);
                unsigned ps_iter_samples = si_get_ps_iter_samples(sctx);
                unsigned log_ps_iter_samples = util_logbase2(ps_iter_samples);
 
@@ -3424,7 +3432,7 @@ static void si_emit_msaa_config(struct si_context *sctx)
                if (sctx->framebuffer.nr_samples > 1) {
                        radeon_set_context_reg(cs, R_028804_DB_EQAA,
                                               db_eqaa |
-                                              
S_028804_MAX_ANCHOR_SAMPLES(log_samples) |
+                                              
S_028804_MAX_ANCHOR_SAMPLES(log_z_samples) |
                                               
S_028804_PS_ITER_SAMPLES(log_ps_iter_samples) |
                                               
S_028804_MASK_EXPORT_NUM_SAMPLES(log_samples) |
                                               
S_028804_ALPHA_TO_MASK_NUM_SAMPLES(log_samples));

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

Reply via email to