venus: remove redundant bo roundtrip and add more docs
authorYiwei Zhang <zzyiwei@chromium.org>
Thu, 5 Oct 2023 07:33:29 +0000 (00:33 -0700)
committerMarge Bot <emma+marge@anholt.net>
Tue, 10 Oct 2023 01:59:34 +0000 (01:59 +0000)
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25611>

src/virtio/vulkan/vn_device_memory.c
src/virtio/vulkan/vn_device_memory.h

index 51659c9..3a1589b 100644 (file)
@@ -335,16 +335,6 @@ vn_device_memory_alloc_guest_vram(
       return result;
    }
 
-   result =
-      vn_instance_submit_roundtrip(dev->instance, &mem->bo_roundtrip_seqno);
-   if (result != VK_SUCCESS) {
-      vn_renderer_bo_unref(dev->renderer, mem->base_bo);
-      vn_async_vkFreeMemory(dev->instance, dev_handle, mem_handle, NULL);
-      return result;
-   }
-
-   mem->bo_roundtrip_seqno_valid = true;
-
    return VK_SUCCESS;
 }
 
index 4bf5911..cc4d470 100644 (file)
@@ -31,9 +31,20 @@ struct vn_device_memory {
    struct vn_device_memory *base_memory;
    /* non-NULL when mappable or external */
    struct vn_renderer_bo *base_bo;
-   /* enforce kernel and ring ordering between memory export and free */
+
+   /* ensure renderer side vkFreeMemory is called after vkGetMemoryFdKHR
+    *
+    * 1. driver creates virtgpu bo from renderer VkDeviceMemory
+    * 2. driver submits via vq to update the vq seqno
+    * 3, driver submits via ring to wait for vq reaching above seqno
+    * 4. driver submits vkFreeMemory via ring
+    *
+    * To be noted: a successful virtgpu mmap implies a roundtrip, so
+    * vn_FreeMemory after that no longer has to wait.
+    */
    bool bo_roundtrip_seqno_valid;
    uint64_t bo_roundtrip_seqno;
+
    VkDeviceSize base_offset;
 
    VkDeviceSize map_end;