[Freedreno] [PATCH] freedreno/a3xx: execute dummy draw call only on a320

sheffmail at mail.ru sheffmail at mail.ru
Fri Jul 18 07:55:06 PDT 2014


From: Stanislav Vorobiov <sheffmail at mail.ru>

this dummy draw call causes GPU stall on a330+ with kgsl.
when kgsl comes out of SLUMBER state it executes OpenCL
power-on fixup code, which is in adreno_a3xx_pwron_fixup_init,
executing dummy draw call right after this fixup code causes
GPU stall
---
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
index f77c722..82e6ca0 100644
--- a/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
+++ b/src/gallium/drivers/freedreno/a3xx/fd3_emit.c
@@ -673,12 +673,13 @@ fd3_emit_restore(struct fd_context *ctx)
 
 	fd_event_write(ctx, ring, CACHE_FLUSH);
 
-	/* probably only really needed on a320: */
-	OUT_PKT3(ring, CP_DRAW_INDX, 3);
-	OUT_RING(ring, 0x00000000);
-	OUT_RING(ring, DRAW(1, DI_SRC_SEL_AUTO_INDEX,
-			INDEX_SIZE_IGN, IGNORE_VISIBILITY));
-	OUT_RING(ring, 0);					/* NumIndices */
+	if (ctx->screen->gpu_id == 320) {
+		OUT_PKT3(ring, CP_DRAW_INDX, 3);
+		OUT_RING(ring, 0x00000000);
+		OUT_RING(ring, DRAW(1, DI_SRC_SEL_AUTO_INDEX,
+				INDEX_SIZE_IGN, IGNORE_VISIBILITY));
+		OUT_RING(ring, 0);					/* NumIndices */
+	}
 
 	OUT_PKT3(ring, CP_NOP, 4);
 	OUT_RING(ring, 0x00000000);
-- 
1.7.9.5



More information about the Freedreno mailing list