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