Module: Mesa Branch: master Commit: 5a3f6323735832e76d30cae9f16bbb725071b650 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a3f6323735832e76d30cae9f16bbb725071b650
Author: Chia-I Wu <olva...@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 <olva...@gmail.com> Reviewed-by: Yiwei Zhang <zzyi...@chromium.org> Acked-by: Erik Faye-Lund <erik.faye-l...@collabora.com> Reviewed-by: Ryan Neph <ryann...@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; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit