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)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+