From: Marek Olšák <marek.ol...@amd.com>

radeonsi will set more fields
---
 src/gallium/drivers/r600/evergreen_state.c    |  7 ++++++-
 src/gallium/drivers/radeon/cayman_msaa.c      | 12 +++++-------
 src/gallium/drivers/radeon/r600_pipe_common.h |  3 ++-
 src/gallium/drivers/radeonsi/si_state.c       |  6 +++++-
 4 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 4a25582..0b8488d 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -1670,8 +1670,13 @@ static void evergreen_emit_framebuffer_state(struct 
r600_context *rctx, struct r
        if (rctx->b.chip_class == EVERGREEN) {
                evergreen_emit_msaa_state(rctx, rctx->framebuffer.nr_samples, 
rctx->ps_iter_samples);
        } else {
+               unsigned sc_mode_cntl_1 =
+                       EG_S_028A4C_FORCE_EOV_CNTDWN_ENABLE(1) |
+                       EG_S_028A4C_FORCE_EOV_REZ_ENABLE(1);
+
                cayman_emit_msaa_sample_locs(cs, rctx->framebuffer.nr_samples);
-               cayman_emit_msaa_config(cs, rctx->framebuffer.nr_samples, 
rctx->ps_iter_samples, 0);
+               cayman_emit_msaa_config(cs, rctx->framebuffer.nr_samples,
+                                       rctx->ps_iter_samples, 0, 
sc_mode_cntl_1);
        }
 }
 
diff --git a/src/gallium/drivers/radeon/cayman_msaa.c 
b/src/gallium/drivers/radeon/cayman_msaa.c
index 9412e89..a9ec4c3 100644
--- a/src/gallium/drivers/radeon/cayman_msaa.c
+++ b/src/gallium/drivers/radeon/cayman_msaa.c
@@ -195,7 +195,8 @@ void cayman_emit_msaa_sample_locs(struct radeon_winsys_cs 
*cs, int nr_samples)
 }
 
 void cayman_emit_msaa_config(struct radeon_winsys_cs *cs, int nr_samples,
-                            int ps_iter_samples, int overrast_samples)
+                            int ps_iter_samples, int overrast_samples,
+                            unsigned sc_mode_cntl_1)
 {
        int setup_samples = nr_samples > 1 ? nr_samples :
                            overrast_samples > 1 ? overrast_samples : 0;
@@ -230,16 +231,14 @@ void cayman_emit_msaa_config(struct radeon_winsys_cs *cs, 
int nr_samples,
                                               
S_028804_STATIC_ANCHOR_ASSOCIATIONS(1));
                        radeon_set_context_reg(cs, 
EG_R_028A4C_PA_SC_MODE_CNTL_1,
                                               
EG_S_028A4C_PS_ITER_SAMPLE(ps_iter_samples > 1) |
-                                              
EG_S_028A4C_FORCE_EOV_CNTDWN_ENABLE(1) |
-                                              
EG_S_028A4C_FORCE_EOV_REZ_ENABLE(1));
+                                              sc_mode_cntl_1);
                } else if (overrast_samples > 1) {
                        radeon_set_context_reg(cs, CM_R_028804_DB_EQAA,
                                               
S_028804_HIGH_QUALITY_INTERSECTIONS(1) |
                                               
S_028804_STATIC_ANCHOR_ASSOCIATIONS(1) |
                                               
S_028804_OVERRASTERIZATION_AMOUNT(log_samples));
                        radeon_set_context_reg(cs, 
EG_R_028A4C_PA_SC_MODE_CNTL_1,
-                                              
EG_S_028A4C_FORCE_EOV_CNTDWN_ENABLE(1) |
-                                              
EG_S_028A4C_FORCE_EOV_REZ_ENABLE(1));
+                                              sc_mode_cntl_1);
                }
        } else {
                radeon_set_context_reg_seq(cs, CM_R_028BDC_PA_SC_LINE_CNTL, 2);
@@ -250,7 +249,6 @@ void cayman_emit_msaa_config(struct radeon_winsys_cs *cs, 
int nr_samples,
                                       S_028804_HIGH_QUALITY_INTERSECTIONS(1) |
                                       S_028804_STATIC_ANCHOR_ASSOCIATIONS(1));
                radeon_set_context_reg(cs, EG_R_028A4C_PA_SC_MODE_CNTL_1,
-                                      EG_S_028A4C_FORCE_EOV_CNTDWN_ENABLE(1) |
-                                      EG_S_028A4C_FORCE_EOV_REZ_ENABLE(1));
+                                      sc_mode_cntl_1);
        }
 }
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h 
b/src/gallium/drivers/radeon/r600_pipe_common.h
index fe29f68..8117c9a 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.h
+++ b/src/gallium/drivers/radeon/r600_pipe_common.h
@@ -727,7 +727,8 @@ void cayman_get_sample_position(struct pipe_context *ctx, 
unsigned sample_count,
 void cayman_init_msaa(struct pipe_context *ctx);
 void cayman_emit_msaa_sample_locs(struct radeon_winsys_cs *cs, int nr_samples);
 void cayman_emit_msaa_config(struct radeon_winsys_cs *cs, int nr_samples,
-                            int ps_iter_samples, int overrast_samples);
+                            int ps_iter_samples, int overrast_samples,
+                            unsigned sc_mode_cntl_1);
 
 
 /* Inline helpers. */
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 02890a1..f5da153 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2555,10 +2555,14 @@ static void si_emit_msaa_sample_locs(struct si_context 
*sctx,
 static void si_emit_msaa_config(struct si_context *sctx, struct r600_atom 
*atom)
 {
        struct radeon_winsys_cs *cs = sctx->b.gfx.cs;
+       unsigned sc_mode_cntl_1 =
+               S_028A4C_FORCE_EOV_CNTDWN_ENABLE(1) |
+               S_028A4C_FORCE_EOV_REZ_ENABLE(1);
 
        cayman_emit_msaa_config(cs, sctx->framebuffer.nr_samples,
                                sctx->ps_iter_samples,
-                               sctx->smoothing_enabled ? 
SI_NUM_SMOOTH_AA_SAMPLES : 0);
+                               sctx->smoothing_enabled ? 
SI_NUM_SMOOTH_AA_SAMPLES : 0,
+                               sc_mode_cntl_1);
 }
 
 
-- 
2.7.4

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

Reply via email to