Merge "Use context specific ring for EXPORT_SYNC_VK"
GitOrigin-RevId: c18926df28b6269f22415e1ba2964da0e78c6212
Change-Id: I51b1c781139ad1e524451741d09fe0eb1a2f404c
diff --git a/stream-servers/virtio-gpu-gfxstream-renderer.cpp b/stream-servers/virtio-gpu-gfxstream-renderer.cpp
index b4370c9..dcf591e 100644
--- a/stream-servers/virtio-gpu-gfxstream-renderer.cpp
+++ b/stream-servers/virtio-gpu-gfxstream-renderer.cpp
@@ -774,6 +774,15 @@
}
case GFXSTREAM_CREATE_EXPORT_SYNC_VK:
case GFXSTREAM_CREATE_IMPORT_SYNC_VK: {
+ // The guest sync export assumes fence context support and always uses
+ // VIRTGPU_EXECBUF_RING_IDX. With this, the task created here must use
+ // the same ring as the fence created for the virtio gpu command or the
+ // fence may be signaled without properly waiting for the task to complete.
+ ring = VirtioGpuRingContextSpecific{
+ .mCtxId = ctxId,
+ .mRingIdx = 0,
+ };
+
DECODE(exportSyncVK, gfxstream::gfxstreamCreateExportSyncVK, buffer)
uint64_t device_handle =