Mesa (main): radeonsi: set PA_SC_EDGERULE according to bottom_edge_rule state

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 22 21:24:19 UTC 2022


Module: Mesa
Branch: main
Commit: d54236ec41f77e8434a389295dcf475f3c6fffc2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d54236ec41f77e8434a389295dcf475f3c6fffc2

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Mar 22 02:12:45 2022 -0400

radeonsi: set PA_SC_EDGERULE according to bottom_edge_rule state

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15965>

---

 .../drivers/radeonsi/ci/traces-radeonsi.yml        |  4 ++--
 src/gallium/drivers/radeonsi/si_state.c            | 27 ++++++++++++++++++----
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml b/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml
index a3a3772e7bf..3eadeb87135 100644
--- a/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml
+++ b/src/gallium/drivers/radeonsi/ci/traces-radeonsi.yml
@@ -17,11 +17,11 @@ traces:
   - path: 0ad/0ad.trace
     expectations:
       - device: gl-radeonsi-stoney
-        checksum: 1a089d8584a9e68e7ab08eada954741b
+        checksum: 8d71757cb74f8d71bf87c8af7e7f725a
   - path: pathfinder/demo.trace
     expectations:
       - device: gl-radeonsi-stoney
-        checksum: c81c85f9b247dd1b06c3dd5b669cc283
+        checksum: 86318ec31a55a1246cb4a136a15475fd
   - path: pathfinder/canvas_moire.trace
     expectations:
       - device: gl-radeonsi-stoney
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index fbb214c2594..54f00010a93 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -1051,6 +1051,28 @@ static void *si_create_rs_state(struct pipe_context *ctx, const struct pipe_rast
                                                       polygon_mode_enabled ||
                                                       rs->perpendicular_end_caps : 0));
 
+   if (state->bottom_edge_rule) {
+      /* OpenGL windows should set this. */
+      si_pm4_set_reg(pm4, R_028230_PA_SC_EDGERULE,
+                     S_028230_ER_TRI(0xA) |
+                     S_028230_ER_POINT(0x5) |
+                     S_028230_ER_RECT(0x9) |
+                     S_028230_ER_LINE_LR(0x29) |
+                     S_028230_ER_LINE_RL(0x29) |
+                     S_028230_ER_LINE_TB(0xA) |
+                     S_028230_ER_LINE_BT(0xA));
+   } else {
+      /* OpenGL FBOs and Direct3D should set this. */
+      si_pm4_set_reg(pm4, R_028230_PA_SC_EDGERULE,
+                     S_028230_ER_TRI(0xA) |
+                     S_028230_ER_POINT(0xA) |
+                     S_028230_ER_RECT(0xA) |
+                     S_028230_ER_LINE_LR(0x1A) |
+                     S_028230_ER_LINE_RL(0x26) |
+                     S_028230_ER_LINE_TB(0xA) |
+                     S_028230_ER_LINE_BT(0xA));
+   }
+
    if (!rs->uses_poly_offset)
       return rs;
 
@@ -5406,11 +5428,6 @@ void si_init_cs_preamble_state(struct si_context *sctx, bool uses_reg_shadowing)
       si_pm4_set_reg(pm4, R_028A1C_VGT_HOS_MIN_TESS_LEVEL, fui(0));
 
    if (!has_clear_state) {
-      si_pm4_set_reg(pm4, R_028230_PA_SC_EDGERULE,
-                     S_028230_ER_TRI(0xA) | S_028230_ER_POINT(0xA) | S_028230_ER_RECT(0xA) |
-                        /* Required by DX10_DIAMOND_TEST_ENA: */
-                        S_028230_ER_LINE_LR(0x1A) | S_028230_ER_LINE_RL(0x26) |
-                        S_028230_ER_LINE_TB(0xA) | S_028230_ER_LINE_BT(0xA));
       si_pm4_set_reg(pm4, R_028820_PA_CL_NANINF_CNTL, 0);
       si_pm4_set_reg(pm4, R_028AC0_DB_SRESULTS_COMPARE_STATE0, 0x0);
       si_pm4_set_reg(pm4, R_028AC4_DB_SRESULTS_COMPARE_STATE1, 0x0);



More information about the mesa-commit mailing list