Mesa (master): radeonsi: disable primitive binning for all blitter ops

Marek Olšák mareko at kemper.freedesktop.org
Thu May 24 17:42:06 UTC 2018


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Wed May  2 21:03:44 2018 -0400

radeonsi: disable primitive binning for all blitter ops

same as amdvlk.

Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

---

 src/gallium/drivers/radeonsi/si_blit.c          | 10 ++++++++++
 src/gallium/drivers/radeonsi/si_pipe.h          |  2 +-
 src/gallium/drivers/radeonsi/si_state_binning.c |  2 +-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_blit.c b/src/gallium/drivers/radeonsi/si_blit.c
index 6f4cd1f904..fe059b3657 100644
--- a/src/gallium/drivers/radeonsi/si_blit.c
+++ b/src/gallium/drivers/radeonsi/si_blit.c
@@ -75,10 +75,20 @@ void si_blitter_begin(struct si_context *sctx, enum si_blitter_op op)
 
 	if (op & SI_DISABLE_RENDER_COND)
 		sctx->render_cond_force_off = true;
+
+	if (sctx->screen->dpbb_allowed) {
+		sctx->dpbb_force_off = true;
+		si_mark_atom_dirty(sctx, &sctx->atoms.s.dpbb_state);
+	}
 }
 
 void si_blitter_end(struct si_context *sctx)
 {
+	if (sctx->screen->dpbb_allowed) {
+		sctx->dpbb_force_off = false;
+		si_mark_atom_dirty(sctx, &sctx->atoms.s.dpbb_state);
+	}
+
 	sctx->render_cond_force_off = false;
 
 	/* Restore shader pointers because the VS blit shader changed all
diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h
index 6917d5e606..5d1671fb87 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.h
+++ b/src/gallium/drivers/radeonsi/si_pipe.h
@@ -927,7 +927,7 @@ struct si_context {
 	/* Other state */
 	bool need_check_render_feedback;
 	bool			decompression_enabled;
-
+	bool			dpbb_force_off;
 	bool			vs_writes_viewport_index;
 	bool			vs_disables_clipping_viewport;
 
diff --git a/src/gallium/drivers/radeonsi/si_state_binning.c b/src/gallium/drivers/radeonsi/si_state_binning.c
index 80b1137fd0..2605b59bbe 100644
--- a/src/gallium/drivers/radeonsi/si_state_binning.c
+++ b/src/gallium/drivers/radeonsi/si_state_binning.c
@@ -343,7 +343,7 @@ void si_emit_dpbb_state(struct si_context *sctx)
 
 	assert(sctx->chip_class >= GFX9);
 
-	if (!sscreen->dpbb_allowed || !blend || !dsa) {
+	if (!sscreen->dpbb_allowed || !blend || !dsa || sctx->dpbb_force_off) {
 		si_emit_dpbb_disable(sctx);
 		return;
 	}




More information about the mesa-commit mailing list