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

Author: Marek Olšák <[email protected]>
Date:   Fri Oct  9 16:46:26 2020 -0400

radeonsi: set NOT_EOP for back-to-back draws on gfx10+

Acked-by: Pierre-Eric Pelloux-Prayer <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7056>

---

 src/gallium/drivers/radeonsi/si_state_draw.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c 
b/src/gallium/drivers/radeonsi/si_state_draw.c
index 689b7ea06ad..6ce07d7c409 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -958,7 +958,14 @@ static void si_emit_draw_packets(struct si_context *sctx, 
const struct pipe_draw
             radeon_emit(cs, va);
             radeon_emit(cs, va >> 32);
             radeon_emit(cs, draws[i].count);
-            radeon_emit(cs, V_0287F0_DI_SRC_SEL_DMA);
+            radeon_emit(cs, V_0287F0_DI_SRC_SEL_DMA |
+                        /* NOT_EOP allows merging multiple draws into 1 wave, 
but only user VGPRs
+                         * can be changed between draws and GS fast launch 
must be disabled.
+                         * NOT_EOP doesn't work on gfx9 and older.
+                         */
+                        S_0287F0_NOT_EOP(sctx->chip_class >= GFX10 &&
+                                         i < num_draws - 1 &&
+                                         !(sctx->ngg_culling & 
SI_NGG_CULL_GS_FAST_LAUNCH_ALL)));
          }
       } else {
          for (unsigned i = 0; i < num_draws; i++) {

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to