From a6c9f152ccca3b4442c4c73f60a1ae95e51cf94c Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 18 Jul 2024 14:16:48 -0700 Subject: [PATCH] freedreno/drm: Handle a7xx case Signed-off-by: Rob Clark Part-of: --- src/freedreno/drm/freedreno_pipe.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/freedreno/drm/freedreno_pipe.c b/src/freedreno/drm/freedreno_pipe.c index c3fc7db41f5..362e6966376 100644 --- a/src/freedreno/drm/freedreno_pipe.c +++ b/src/freedreno/drm/freedreno_pipe.c @@ -200,8 +200,17 @@ uint32_t fd_pipe_emit_fence(struct fd_pipe *pipe, struct fd_ringbuffer *ring) { uint32_t fence = ++pipe->last_fence; + unsigned gen = fd_dev_gen(&pipe->dev_id); - if (pipe->is_64bit) { + if (gen >= A7XX) { + OUT_PKT7(ring, CP_EVENT_WRITE7, 4); + OUT_RING(ring, CP_EVENT_WRITE_0_EVENT(CACHE_FLUSH_TS) | + CP_EVENT_WRITE7_0_WRITE_SRC(EV_WRITE_USER_32B) | + CP_EVENT_WRITE7_0_WRITE_DST(EV_DST_RAM) | + CP_EVENT_WRITE7_0_WRITE_ENABLED); + OUT_RELOC(ring, control_ptr(pipe, fence)); /* ADDR_LO/HI */ + OUT_RING(ring, fence); + } else if (gen >= A5XX) { OUT_PKT7(ring, CP_EVENT_WRITE, 4); OUT_RING(ring, CP_EVENT_WRITE_0_EVENT(CACHE_FLUSH_TS)); OUT_RELOC(ring, control_ptr(pipe, fence)); /* ADDR_LO/HI */