From 511fb6b8e99dfdd1734214706bceb2bda24b6219 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 9 Dec 2021 14:12:01 -0800 Subject: [PATCH] venus: add vn_renderer_util.[ch] Move helpers built on top of vn_renderer.h to the new files. Signed-off-by: Chia-I Wu Reviewed-by: Ryan Neph Reviewed-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/meson.build | 1 + src/virtio/vulkan/vn_instance.h | 1 + src/virtio/vulkan/vn_renderer.h | 55 ---------------------------- src/virtio/vulkan/vn_renderer_util.c | 45 +++++++++++++++++++++++ src/virtio/vulkan/vn_renderer_util.h | 32 ++++++++++++++++ 5 files changed, 79 insertions(+), 55 deletions(-) create mode 100644 src/virtio/vulkan/vn_renderer_util.c create mode 100644 src/virtio/vulkan/vn_renderer_util.h diff --git a/src/virtio/vulkan/meson.build b/src/virtio/vulkan/meson.build index fbce2339652..6c0d9cb32b5 100644 --- a/src/virtio/vulkan/meson.build +++ b/src/virtio/vulkan/meson.build @@ -47,6 +47,7 @@ libvn_files = files( 'vn_queue.c', 'vn_render_pass.c', 'vn_ring.c', + 'vn_renderer_util.c', 'vn_renderer_virtgpu.c', 'vn_renderer_vtest.c', ) diff --git a/src/virtio/vulkan/vn_instance.h b/src/virtio/vulkan/vn_instance.h index a6e971430f5..1c3767fcea9 100644 --- a/src/virtio/vulkan/vn_instance.h +++ b/src/virtio/vulkan/vn_instance.h @@ -17,6 +17,7 @@ #include "vn_cs.h" #include "vn_renderer.h" +#include "vn_renderer_util.h" #include "vn_ring.h" /* require and request at least Vulkan 1.1 at both instance and device levels diff --git a/src/virtio/vulkan/vn_renderer.h b/src/virtio/vulkan/vn_renderer.h index 8706cc420fd..9118548bfeb 100644 --- a/src/virtio/vulkan/vn_renderer.h +++ b/src/virtio/vulkan/vn_renderer.h @@ -264,22 +264,6 @@ vn_renderer_submit(struct vn_renderer *renderer, return renderer->ops.submit(renderer, submit); } -static inline VkResult -vn_renderer_submit_simple(struct vn_renderer *renderer, - const void *cs_data, - size_t cs_size) -{ - const struct vn_renderer_submit submit = { - .batches = - &(const struct vn_renderer_submit_batch){ - .cs_data = cs_data, - .cs_size = cs_size, - }, - .batch_count = 1, - }; - return vn_renderer_submit(renderer, &submit); -} - static inline VkResult vn_renderer_wait(struct vn_renderer *renderer, const struct vn_renderer_wait *wait) @@ -466,43 +450,4 @@ 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 */ diff --git a/src/virtio/vulkan/vn_renderer_util.c b/src/virtio/vulkan/vn_renderer_util.c new file mode 100644 index 00000000000..2eae0e697d5 --- /dev/null +++ b/src/virtio/vulkan/vn_renderer_util.c @@ -0,0 +1,45 @@ +/* + * Copyright 2021 Google LLC + * SPDX-License-Identifier: MIT + */ + +#include "vn_renderer_util.h" + +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; +} diff --git a/src/virtio/vulkan/vn_renderer_util.h b/src/virtio/vulkan/vn_renderer_util.h new file mode 100644 index 00000000000..cefe4bfc5e9 --- /dev/null +++ b/src/virtio/vulkan/vn_renderer_util.h @@ -0,0 +1,32 @@ +/* + * Copyright 2021 Google LLC + * SPDX-License-Identifier: MIT + */ + +#ifndef VN_RENDERER_UTIL_H +#define VN_RENDERER_UTIL_H + +#include "vn_renderer.h" + +static inline VkResult +vn_renderer_submit_simple(struct vn_renderer *renderer, + const void *cs_data, + size_t cs_size) +{ + const struct vn_renderer_submit submit = { + .batches = + &(const struct vn_renderer_submit_batch){ + .cs_data = cs_data, + .cs_size = cs_size, + }, + .batch_count = 1, + }; + return vn_renderer_submit(renderer, &submit); +} + +VkResult +vn_renderer_submit_simple_sync(struct vn_renderer *renderer, + const void *cs_data, + size_t cs_size); + +#endif /* VN_RENDERER_UTIL_H */