[Mesa-dev] [PATCH] radeonsi: Fix primitive restart when index changes

James Legg jlegg at feralinteractive.com
Tue Oct 4 13:30:11 UTC 2016


If primitive restart is enabled for two consecutive draws which use
different primitive restart indices, then the first draw's primitive
restart index was incorrectly used for the second draw.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98025
---
 src/gallium/drivers/radeonsi/si_state_draw.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index e44147f..10e8be4 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -509,13 +509,13 @@ static void si_emit_draw_registers(struct si_context *sctx,
 		radeon_set_context_reg(cs, R_028A94_VGT_MULTI_PRIM_IB_RESET_EN, info->primitive_restart);
 		sctx->last_primitive_restart_en = info->primitive_restart;
 
-		if (info->primitive_restart &&
-		    (info->restart_index != sctx->last_restart_index ||
-		     sctx->last_restart_index == SI_RESTART_INDEX_UNKNOWN)) {
-			radeon_set_context_reg(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
-					       info->restart_index);
-			sctx->last_restart_index = info->restart_index;
-		}
+	}
+	if (info->primitive_restart &&
+	    (info->restart_index != sctx->last_restart_index ||
+	     sctx->last_restart_index == SI_RESTART_INDEX_UNKNOWN)) {
+		radeon_set_context_reg(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
+				       info->restart_index);
+		sctx->last_restart_index = info->restart_index;
 	}
 }
 
-- 
2.8.3



More information about the mesa-dev mailing list