Mesa (master): venus: prepare for splitting vn_device.[ch]

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 9 17:09:11 UTC 2021


Module: Mesa
Branch: master
Commit: 5a3f6323735832e76d30cae9f16bbb725071b650
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a3f6323735832e76d30cae9f16bbb725071b650

Author: Chia-I Wu <olvaffe at gmail.com>
Date:   Wed Apr  7 15:26:15 2021 -0700

venus: prepare for splitting vn_device.[ch]

Make virtqueue/ring sync functions available to other files.

Signed-off-by: Chia-I Wu <olvaffe at gmail.com>
Reviewed-by: Yiwei Zhang <zzyiwei at chromium.org>
Acked-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Reviewed-by: Ryan Neph <ryanneph at google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10117>

---

 src/virtio/vulkan/vn_device.c | 27 ++++++++++-----------------
 src/virtio/vulkan/vn_device.h | 23 +++++++++++++++++++++++
 2 files changed, 33 insertions(+), 17 deletions(-)

diff --git a/src/virtio/vulkan/vn_device.c b/src/virtio/vulkan/vn_device.c
index 68d9561ec2d..aff69b2835a 100644
--- a/src/virtio/vulkan/vn_device.c
+++ b/src/virtio/vulkan/vn_device.c
@@ -239,7 +239,7 @@ vn_instance_submit_roundtrip(struct vn_instance *instance,
    return result;
 }
 
-static void
+void
 vn_instance_wait_roundtrip(struct vn_instance *instance,
                            uint32_t roundtrip_seqno)
 {
@@ -254,14 +254,6 @@ vn_instance_wait_roundtrip(struct vn_instance *instance,
    } while (true);
 }
 
-static void
-vn_instance_roundtrip(struct vn_instance *instance)
-{
-   uint32_t roundtrip_seqno;
-   if (vn_instance_submit_roundtrip(instance, &roundtrip_seqno) == VK_SUCCESS)
-      vn_instance_wait_roundtrip(instance, roundtrip_seqno);
-}
-
 struct vn_instance_submission {
    uint32_t local_cs_data[64];
 
@@ -471,11 +463,15 @@ vn_instance_ring_submit_locked(struct vn_instance *instance,
    return VK_SUCCESS;
 }
 
-static void
-vn_instance_ring_wait(struct vn_instance *instance)
+VkResult
+vn_instance_ring_submit(struct vn_instance *instance,
+                        const struct vn_cs_encoder *cs)
 {
-   struct vn_ring *ring = &instance->ring.ring;
-   vn_ring_wait_all(ring);
+   mtx_lock(&instance->ring.mutex);
+   VkResult result = vn_instance_ring_submit_locked(instance, cs, NULL, NULL);
+   mtx_unlock(&instance->ring.mutex);
+
+   return result;
 }
 
 static bool
@@ -7083,10 +7079,7 @@ vn_EndCommandBuffer(VkCommandBuffer commandBuffer)
    }
 
    vn_instance_wait_roundtrip(instance, cmd->cs.current_buffer_roundtrip);
-   mtx_lock(&instance->ring.mutex);
-   VkResult result =
-      vn_instance_ring_submit_locked(instance, &cmd->cs, NULL, NULL);
-   mtx_unlock(&instance->ring.mutex);
+   VkResult result = vn_instance_ring_submit(instance, &cmd->cs);
    if (result != VK_SUCCESS) {
       cmd->state = VN_COMMAND_BUFFER_STATE_INVALID;
       return vn_error(instance, result);
diff --git a/src/virtio/vulkan/vn_device.h b/src/virtio/vulkan/vn_device.h
index 06d12b55b6a..e63751011ec 100644
--- a/src/virtio/vulkan/vn_device.h
+++ b/src/virtio/vulkan/vn_device.h
@@ -424,6 +424,29 @@ VkResult
 vn_instance_submit_roundtrip(struct vn_instance *instance,
                              uint32_t *roundtrip_seqno);
 
+void
+vn_instance_wait_roundtrip(struct vn_instance *instance,
+                           uint32_t roundtrip_seqno);
+
+static inline void
+vn_instance_roundtrip(struct vn_instance *instance)
+{
+   uint32_t roundtrip_seqno;
+   if (vn_instance_submit_roundtrip(instance, &roundtrip_seqno) == VK_SUCCESS)
+      vn_instance_wait_roundtrip(instance, roundtrip_seqno);
+}
+
+VkResult
+vn_instance_ring_submit(struct vn_instance *instance,
+                        const struct vn_cs_encoder *cs);
+
+static inline void
+vn_instance_ring_wait(struct vn_instance *instance)
+{
+   struct vn_ring *ring = &instance->ring.ring;
+   vn_ring_wait_all(ring);
+}
+
 struct vn_instance_submit_command {
    /* empty command implies errors */
    struct vn_cs_encoder command;



More information about the mesa-commit mailing list