Mesa (master): freedreno/a6xx: WFI before RB_CCU_CNTL writes
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 7 19:09:20 UTC 2019
Module: Mesa
Branch: master
Commit: 1d002cfade6d5fa912bb7bfd98291bf39b3346a9
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1d002cfade6d5fa912bb7bfd98291bf39b3346a9
Author: Rob Clark <robdclark at chromium.org>
Date: Thu Jun 6 10:19:07 2019 -0700
freedreno/a6xx: WFI before RB_CCU_CNTL writes
This seems to be in a block of non buffered/context regs. Blob always
WFIs before write, so probably a good idea.
Annoyingly, compared to ealier gens, it is a bit harder to tell from the
register offset whether it is a buffered reg, it isn't as simple as
everything below 0x2000, it seems.
Signed-off-by: Rob Clark <robdclark at chromium.org>
Reviewed-by: Kristian H. Kristensen <hoegsberg at google.com>
---
src/gallium/drivers/freedreno/a6xx/fd6_draw.c | 2 ++
src/gallium/drivers/freedreno/a6xx/fd6_emit.c | 2 ++
2 files changed, 4 insertions(+)
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
index 7933d3bc2b5..edf4925a339 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_draw.c
@@ -266,6 +266,8 @@ fd6_clear_lrz(struct fd_batch *batch, struct fd_resource *zsbuf, double depth)
OUT_RING(ring, A2XX_CP_SET_MARKER_0_MODE(RM6_BYPASS));
emit_marker6(ring, 7);
+ OUT_WFI5(ring);
+
OUT_PKT4(ring, REG_A6XX_RB_CCU_CNTL, 1);
OUT_RING(ring, 0x10000000);
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c
index a48fc11721f..c9766fd382d 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_emit.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_emit.c
@@ -1143,6 +1143,8 @@ t7 opcode: CP_WAIT_FOR_IDLE (26) (1 dwords)
0000000500024068: 70268000
*/
+ OUT_WFI5(ring);
+
WRITE(REG_A6XX_RB_CCU_CNTL, 0x7c400004);
WRITE(REG_A6XX_RB_UNKNOWN_8E04, 0x00100000);
WRITE(REG_A6XX_SP_UNKNOWN_AE04, 0x8);
More information about the mesa-commit
mailing list