Mesa (master): radeonsi: fix a hang with instancing in Unigine Heaven/ Valley on Hawaii

Marek Olšák mareko at kemper.freedesktop.org
Sat Aug 9 21:42:17 UTC 2014


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Wed Aug  6 02:11:04 2014 +0200

radeonsi: fix a hang with instancing in Unigine Heaven/Valley on Hawaii

This isn't documented anywhere, but it's the only thing that works
for this case.

Cc: mesa-stable at lists.freedesktop.org
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

---

 src/gallium/drivers/radeonsi/si_state_draw.c |    7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index eb21ba1..4e808a3 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -411,14 +411,11 @@ static bool si_update_draw_info_state(struct si_context *sctx,
 		bool ia_switch_on_eop = wd_switch_on_eop;
 		unsigned primgroup_size = 64;
 
-		/* Hawaii hangs if instancing is enabled and each instance
-		 * is smaller than a prim group and WD_SWITCH_ON_EOP is 0.
+		/* Hawaii hangs if instancing is enabled and WD_SWITCH_ON_EOP is 0.
 		 * We don't know that for indirect drawing, so treat it as
 		 * always problematic. */
 		if (sctx->b.family == CHIP_HAWAII &&
-		    (info->indirect ||
-		     (info->instance_count > 1 &&
-		      u_prims_for_vertices(info->mode, info->count) < primgroup_size))) {
+		    (info->indirect || info->instance_count > 1)) {
 			wd_switch_on_eop = true;
 			ia_switch_on_eop = true;
 		}




More information about the mesa-commit mailing list