From 68eb682a238c8b583d3660f78685eab756dabc80 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sun, 29 Aug 2021 22:52:00 -0700 Subject: [PATCH] venus: add vn_renderer_submit_simple_sync It submits a command stream to the renderer and waits. Signed-off-by: Chia-I Wu Reviewed-by: Yiwei Zhang Reviewed-by: Ryan Neph Part-of: --- src/virtio/vulkan/vn_renderer.h | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/virtio/vulkan/vn_renderer.h b/src/virtio/vulkan/vn_renderer.h index 18ec9388d01..a277e69cb09 100644 --- a/src/virtio/vulkan/vn_renderer.h +++ b/src/virtio/vulkan/vn_renderer.h @@ -482,4 +482,43 @@ vn_renderer_sync_write(struct vn_renderer *renderer, return renderer->sync_ops.write(renderer, sync, val); } +static inline VkResult +vn_renderer_submit_simple_sync(struct vn_renderer *renderer, + const void *cs_data, + size_t cs_size) +{ + struct vn_renderer_sync *sync; + VkResult result = + vn_renderer_sync_create(renderer, 0, VN_RENDERER_SYNC_BINARY, &sync); + if (result != VK_SUCCESS) + return result; + + const struct vn_renderer_submit submit = { + .batches = + &(const struct vn_renderer_submit_batch){ + .cs_data = cs_data, + .cs_size = cs_size, + .sync_queue_cpu = true, + .syncs = &sync, + .sync_values = &(const uint64_t){ 1 }, + .sync_count = 1, + }, + .batch_count = 1, + }; + const struct vn_renderer_wait wait = { + .timeout = UINT64_MAX, + .syncs = &sync, + .sync_values = &(const uint64_t){ 1 }, + .sync_count = 1, + }; + + result = vn_renderer_submit(renderer, &submit); + if (result == VK_SUCCESS) + result = vn_renderer_wait(renderer, &wait); + + vn_renderer_sync_destroy(renderer, sync); + + return result; +} + #endif /* VN_RENDERER_H */