diff --git a/src/freedreno/computerator/a6xx.cc b/src/freedreno/computerator/a6xx.cc index 5d543602544..f8919a65b8d 100644 --- a/src/freedreno/computerator/a6xx.cc +++ b/src/freedreno/computerator/a6xx.cc @@ -368,9 +368,17 @@ event_write(struct fd_ringbuffer *ring, struct kernel *kernel, { unsigned seqno = 0; - OUT_PKT7(ring, CP_EVENT_WRITE, timestamp ? 4 : 1); - OUT_RING(ring, CP_EVENT_WRITE_0_EVENT(evt) | - COND(timestamp && CHIP == A7XX, CP_EVENT_WRITE_0_SEQNO)); + if (CHIP == A6XX) { + OUT_PKT7(ring, CP_EVENT_WRITE, timestamp ? 4 : 1); + OUT_RING(ring, CP_EVENT_WRITE_0_EVENT(evt)); + } else { + OUT_PKT7(ring, CP_EVENT_WRITE7, timestamp ? 4 : 1); + OUT_RING(ring, + CP_EVENT_WRITE7_0_EVENT(evt) | + COND(timestamp, CP_EVENT_WRITE7_0_WRITE_ENABLED | + CP_EVENT_WRITE7_0_WRITE_SRC(EV_WRITE_USER_32B))); + } + if (timestamp) { struct ir3_kernel *ir3_kernel = to_ir3_kernel(kernel); struct a6xx_backend *a6xx_backend = to_a6xx_backend(ir3_kernel->backend); diff --git a/src/freedreno/registers/adreno/adreno_pm4.xml b/src/freedreno/registers/adreno/adreno_pm4.xml index 306573bde92..f11944360f2 100644 --- a/src/freedreno/registers/adreno/adreno_pm4.xml +++ b/src/freedreno/registers/adreno/adreno_pm4.xml @@ -298,7 +298,8 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> generate an event that creates a write to memory when completed - + + generate a VS|PS_done event generate a cache flush done event @@ -1592,8 +1593,6 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords) - - @@ -1613,6 +1612,74 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2061,10 +2128,35 @@ opcode: CP_LOAD_STATE4 (30) (4 dwords) + + + + + + + + + + + + + + + + - - + + + + + + + + + + +