diff options
author | Rob Clark <[email protected]> | 2019-06-06 10:19:07 -0700 |
---|---|---|
committer | Rob Clark <[email protected]> | 2019-06-07 12:07:29 -0700 |
commit | 1d002cfade6d5fa912bb7bfd98291bf39b3346a9 (patch) | |
tree | 16ef851ea0e886093c6f15716c2f981159f90d26 /src | |
parent | 8a02ca807de419d79dbe2555ec11104436dbbe01 (diff) |
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 <[email protected]>
Reviewed-by: Kristian H. Kristensen <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/drivers/freedreno/a6xx/fd6_draw.c | 2 | ||||
-rw-r--r-- | src/gallium/drivers/freedreno/a6xx/fd6_emit.c | 2 |
2 files changed, 4 insertions, 0 deletions
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); |