Mesa (master): radeonsi: set PARTIAL_VS_WAVE(0) when appropriate

Marek Olšák mareko at kemper.freedesktop.org
Tue Aug 19 10:57:08 UTC 2014


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Fri Aug 15 22:45:10 2014 +0200

radeonsi: set PARTIAL_VS_WAVE(0) when appropriate

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>

---

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

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index 2e999f6..f5d6550 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -389,6 +389,7 @@ static unsigned si_get_ia_multi_vgt_param(struct si_context *sctx,
 	/* SWITCH_ON_EOP(0) is always preferable. */
 	bool wd_switch_on_eop = false;
 	bool ia_switch_on_eop = false;
+	bool partial_vs_wave = false;
 
 	/* This is a hardware requirement. */
 	if ((rs && rs->line_stipple_enable) ||
@@ -397,6 +398,10 @@ static unsigned si_get_ia_multi_vgt_param(struct si_context *sctx,
 		wd_switch_on_eop = true;
 	}
 
+	if (sctx->b.streamout.streamout_enabled ||
+	    sctx->b.streamout.prims_gen_query_enabled)
+		partial_vs_wave = true;
+
 	if (sctx->b.chip_class >= CIK) {
 		/* WD_SWITCH_ON_EOP has no effect on GPUs with less than
 		 * 4 shader engines. Set 1 to pass the assertion below.
@@ -421,7 +426,7 @@ static unsigned si_get_ia_multi_vgt_param(struct si_context *sctx,
 	}
 
 	return S_028AA8_SWITCH_ON_EOP(ia_switch_on_eop) |
-		S_028AA8_PARTIAL_VS_WAVE_ON(1) |
+		S_028AA8_PARTIAL_VS_WAVE_ON(partial_vs_wave) |
 		S_028AA8_PRIMGROUP_SIZE(primgroup_size - 1) |
 		S_028AA8_WD_SWITCH_ON_EOP(sctx->b.chip_class >= CIK ? wd_switch_on_eop : 0);
 }




More information about the mesa-commit mailing list