diff --git a/.pick_status.json b/.pick_status.json index 25c0e212fac..239eb8b01c8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4394,7 +4394,7 @@ "description": "tu/drm/virtio: Add missing a7xx case", "nominated": false, "nomination_type": 3, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/freedreno/vulkan/tu_knl_drm_virtio.cc b/src/freedreno/vulkan/tu_knl_drm_virtio.cc index 9680f2cd6a3..ae88e7997fb 100644 --- a/src/freedreno/vulkan/tu_knl_drm_virtio.cc +++ b/src/freedreno/vulkan/tu_knl_drm_virtio.cc @@ -1005,8 +1005,16 @@ setup_fence_cmds(struct tu_device *dev) memset(c, 0, sizeof(*c)); - c->pkt[0] = pm4_pkt7_hdr((uint8_t)CP_EVENT_WRITE, 4); - c->pkt[1] = CP_EVENT_WRITE_0_EVENT(CACHE_FLUSH_TS); + if (fd_dev_gen(&dev->physical_device->dev_id) >= A7XX) { + c->pkt[0] = pm4_pkt7_hdr((uint8_t)CP_EVENT_WRITE7, 4); + c->pkt[1] = CP_EVENT_WRITE7_0(.event = CACHE_FLUSH_TS, + .write_src = EV_WRITE_USER_32B, + .write_dst = EV_DST_RAM, + .write_enabled = true).value; + } else { + c->pkt[0] = pm4_pkt7_hdr((uint8_t)CP_EVENT_WRITE, 4); + c->pkt[1] = CP_EVENT_WRITE_0_EVENT(CACHE_FLUSH_TS); + } c->pkt[2] = fence_iova; c->pkt[3] = fence_iova >> 32; }