Mesa (master): venus: split out vn_render_pass.[ch]
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Apr 9 17:09:11 UTC 2021
Module: Mesa
Branch: master
Commit: c3fbe3368bfcc134979c02833904b518aa6745c1
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c3fbe3368bfcc134979c02833904b518aa6745c1
Author: Chia-I Wu <olvaffe at gmail.com>
Date: Wed Apr 7 16:42:37 2021 -0700
venus: split out vn_render_pass.[ch]
Move VkRenderPass and VkFramebuffer functions to the new 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/meson.build | 1 +
src/virtio/vulkan/vn_device.c | 142 ---------------------------------
src/virtio/vulkan/vn_device.h | 18 -----
src/virtio/vulkan/vn_render_pass.c | 158 +++++++++++++++++++++++++++++++++++++
src/virtio/vulkan/vn_render_pass.h | 34 ++++++++
5 files changed, 193 insertions(+), 160 deletions(-)
diff --git a/src/virtio/vulkan/meson.build b/src/virtio/vulkan/meson.build
index f26a3c7d4e7..e8454d78ef5 100644
--- a/src/virtio/vulkan/meson.build
+++ b/src/virtio/vulkan/meson.build
@@ -38,6 +38,7 @@ libvn_files = files(
'vn_icd.c',
'vn_pipeline.c',
'vn_query_pool.c',
+ 'vn_render_pass.c',
'vn_ring.c',
'vn_renderer_virtgpu.c',
'vn_renderer_vtest.c',
diff --git a/src/virtio/vulkan/vn_device.c b/src/virtio/vulkan/vn_device.c
index 6dc07d63523..2c6a48eae27 100644
--- a/src/virtio/vulkan/vn_device.c
+++ b/src/virtio/vulkan/vn_device.c
@@ -6146,148 +6146,6 @@ vn_UpdateDescriptorSetWithTemplate(
mtx_unlock(&templ->mutex);
}
-/* render pass commands */
-
-VkResult
-vn_CreateRenderPass(VkDevice device,
- const VkRenderPassCreateInfo *pCreateInfo,
- const VkAllocationCallbacks *pAllocator,
- VkRenderPass *pRenderPass)
-{
- struct vn_device *dev = vn_device_from_handle(device);
- const VkAllocationCallbacks *alloc =
- pAllocator ? pAllocator : &dev->base.base.alloc;
-
- struct vn_render_pass *pass =
- vk_zalloc(alloc, sizeof(*pass), VN_DEFAULT_ALIGN,
- VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
- if (!pass)
- return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
-
- vn_object_base_init(&pass->base, VK_OBJECT_TYPE_RENDER_PASS, &dev->base);
-
- /* XXX VK_IMAGE_LAYOUT_PRESENT_SRC_KHR */
-
- VkRenderPass pass_handle = vn_render_pass_to_handle(pass);
- vn_async_vkCreateRenderPass(dev->instance, device, pCreateInfo, NULL,
- &pass_handle);
-
- *pRenderPass = pass_handle;
-
- return VK_SUCCESS;
-}
-
-VkResult
-vn_CreateRenderPass2(VkDevice device,
- const VkRenderPassCreateInfo2 *pCreateInfo,
- const VkAllocationCallbacks *pAllocator,
- VkRenderPass *pRenderPass)
-{
- struct vn_device *dev = vn_device_from_handle(device);
- const VkAllocationCallbacks *alloc =
- pAllocator ? pAllocator : &dev->base.base.alloc;
-
- struct vn_render_pass *pass =
- vk_zalloc(alloc, sizeof(*pass), VN_DEFAULT_ALIGN,
- VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
- if (!pass)
- return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
-
- vn_object_base_init(&pass->base, VK_OBJECT_TYPE_RENDER_PASS, &dev->base);
-
- /* XXX VK_IMAGE_LAYOUT_PRESENT_SRC_KHR */
-
- VkRenderPass pass_handle = vn_render_pass_to_handle(pass);
- vn_async_vkCreateRenderPass2(dev->instance, device, pCreateInfo, NULL,
- &pass_handle);
-
- *pRenderPass = pass_handle;
-
- return VK_SUCCESS;
-}
-
-void
-vn_DestroyRenderPass(VkDevice device,
- VkRenderPass renderPass,
- const VkAllocationCallbacks *pAllocator)
-{
- struct vn_device *dev = vn_device_from_handle(device);
- struct vn_render_pass *pass = vn_render_pass_from_handle(renderPass);
- const VkAllocationCallbacks *alloc =
- pAllocator ? pAllocator : &dev->base.base.alloc;
-
- if (!pass)
- return;
-
- vn_async_vkDestroyRenderPass(dev->instance, device, renderPass, NULL);
-
- vn_object_base_fini(&pass->base);
- vk_free(alloc, pass);
-}
-
-void
-vn_GetRenderAreaGranularity(VkDevice device,
- VkRenderPass renderPass,
- VkExtent2D *pGranularity)
-{
- struct vn_device *dev = vn_device_from_handle(device);
- struct vn_render_pass *pass = vn_render_pass_from_handle(renderPass);
-
- if (!pass->granularity.width) {
- vn_call_vkGetRenderAreaGranularity(dev->instance, device, renderPass,
- &pass->granularity);
- }
-
- *pGranularity = pass->granularity;
-}
-
-/* framebuffer commands */
-
-VkResult
-vn_CreateFramebuffer(VkDevice device,
- const VkFramebufferCreateInfo *pCreateInfo,
- const VkAllocationCallbacks *pAllocator,
- VkFramebuffer *pFramebuffer)
-{
- struct vn_device *dev = vn_device_from_handle(device);
- const VkAllocationCallbacks *alloc =
- pAllocator ? pAllocator : &dev->base.base.alloc;
-
- struct vn_framebuffer *fb = vk_zalloc(alloc, sizeof(*fb), VN_DEFAULT_ALIGN,
- VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
- if (!fb)
- return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
-
- vn_object_base_init(&fb->base, VK_OBJECT_TYPE_FRAMEBUFFER, &dev->base);
-
- VkFramebuffer fb_handle = vn_framebuffer_to_handle(fb);
- vn_async_vkCreateFramebuffer(dev->instance, device, pCreateInfo, NULL,
- &fb_handle);
-
- *pFramebuffer = fb_handle;
-
- return VK_SUCCESS;
-}
-
-void
-vn_DestroyFramebuffer(VkDevice device,
- VkFramebuffer framebuffer,
- const VkAllocationCallbacks *pAllocator)
-{
- struct vn_device *dev = vn_device_from_handle(device);
- struct vn_framebuffer *fb = vn_framebuffer_from_handle(framebuffer);
- const VkAllocationCallbacks *alloc =
- pAllocator ? pAllocator : &dev->base.base.alloc;
-
- if (!fb)
- return;
-
- vn_async_vkDestroyFramebuffer(dev->instance, device, framebuffer, NULL);
-
- vn_object_base_fini(&fb->base);
- vk_free(alloc, fb);
-}
-
/* event commands */
VkResult
diff --git a/src/virtio/vulkan/vn_device.h b/src/virtio/vulkan/vn_device.h
index dcf887ef763..a688da006cb 100644
--- a/src/virtio/vulkan/vn_device.h
+++ b/src/virtio/vulkan/vn_device.h
@@ -318,24 +318,6 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(vn_descriptor_update_template,
VkDescriptorUpdateTemplate,
VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE)
-struct vn_render_pass {
- struct vn_object_base base;
-
- VkExtent2D granularity;
-};
-VK_DEFINE_NONDISP_HANDLE_CASTS(vn_render_pass,
- base.base,
- VkRenderPass,
- VK_OBJECT_TYPE_RENDER_PASS)
-
-struct vn_framebuffer {
- struct vn_object_base base;
-};
-VK_DEFINE_NONDISP_HANDLE_CASTS(vn_framebuffer,
- base.base,
- VkFramebuffer,
- VK_OBJECT_TYPE_FRAMEBUFFER)
-
struct vn_event {
struct vn_object_base base;
};
diff --git a/src/virtio/vulkan/vn_render_pass.c b/src/virtio/vulkan/vn_render_pass.c
new file mode 100644
index 00000000000..7411f5556a6
--- /dev/null
+++ b/src/virtio/vulkan/vn_render_pass.c
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2019 Google LLC
+ * SPDX-License-Identifier: MIT
+ *
+ * based in part on anv and radv which are:
+ * Copyright © 2015 Intel Corporation
+ * Copyright © 2016 Red Hat.
+ * Copyright © 2016 Bas Nieuwenhuizen
+ */
+
+#include "vn_render_pass.h"
+
+#include "venus-protocol/vn_protocol_driver_framebuffer.h"
+#include "venus-protocol/vn_protocol_driver_render_pass.h"
+
+#include "vn_device.h"
+
+/* render pass commands */
+
+VkResult
+vn_CreateRenderPass(VkDevice device,
+ const VkRenderPassCreateInfo *pCreateInfo,
+ const VkAllocationCallbacks *pAllocator,
+ VkRenderPass *pRenderPass)
+{
+ struct vn_device *dev = vn_device_from_handle(device);
+ const VkAllocationCallbacks *alloc =
+ pAllocator ? pAllocator : &dev->base.base.alloc;
+
+ struct vn_render_pass *pass =
+ vk_zalloc(alloc, sizeof(*pass), VN_DEFAULT_ALIGN,
+ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+ if (!pass)
+ return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
+
+ vn_object_base_init(&pass->base, VK_OBJECT_TYPE_RENDER_PASS, &dev->base);
+
+ /* XXX VK_IMAGE_LAYOUT_PRESENT_SRC_KHR */
+
+ VkRenderPass pass_handle = vn_render_pass_to_handle(pass);
+ vn_async_vkCreateRenderPass(dev->instance, device, pCreateInfo, NULL,
+ &pass_handle);
+
+ *pRenderPass = pass_handle;
+
+ return VK_SUCCESS;
+}
+
+VkResult
+vn_CreateRenderPass2(VkDevice device,
+ const VkRenderPassCreateInfo2 *pCreateInfo,
+ const VkAllocationCallbacks *pAllocator,
+ VkRenderPass *pRenderPass)
+{
+ struct vn_device *dev = vn_device_from_handle(device);
+ const VkAllocationCallbacks *alloc =
+ pAllocator ? pAllocator : &dev->base.base.alloc;
+
+ struct vn_render_pass *pass =
+ vk_zalloc(alloc, sizeof(*pass), VN_DEFAULT_ALIGN,
+ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+ if (!pass)
+ return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
+
+ vn_object_base_init(&pass->base, VK_OBJECT_TYPE_RENDER_PASS, &dev->base);
+
+ /* XXX VK_IMAGE_LAYOUT_PRESENT_SRC_KHR */
+
+ VkRenderPass pass_handle = vn_render_pass_to_handle(pass);
+ vn_async_vkCreateRenderPass2(dev->instance, device, pCreateInfo, NULL,
+ &pass_handle);
+
+ *pRenderPass = pass_handle;
+
+ return VK_SUCCESS;
+}
+
+void
+vn_DestroyRenderPass(VkDevice device,
+ VkRenderPass renderPass,
+ const VkAllocationCallbacks *pAllocator)
+{
+ struct vn_device *dev = vn_device_from_handle(device);
+ struct vn_render_pass *pass = vn_render_pass_from_handle(renderPass);
+ const VkAllocationCallbacks *alloc =
+ pAllocator ? pAllocator : &dev->base.base.alloc;
+
+ if (!pass)
+ return;
+
+ vn_async_vkDestroyRenderPass(dev->instance, device, renderPass, NULL);
+
+ vn_object_base_fini(&pass->base);
+ vk_free(alloc, pass);
+}
+
+void
+vn_GetRenderAreaGranularity(VkDevice device,
+ VkRenderPass renderPass,
+ VkExtent2D *pGranularity)
+{
+ struct vn_device *dev = vn_device_from_handle(device);
+ struct vn_render_pass *pass = vn_render_pass_from_handle(renderPass);
+
+ if (!pass->granularity.width) {
+ vn_call_vkGetRenderAreaGranularity(dev->instance, device, renderPass,
+ &pass->granularity);
+ }
+
+ *pGranularity = pass->granularity;
+}
+
+/* framebuffer commands */
+
+VkResult
+vn_CreateFramebuffer(VkDevice device,
+ const VkFramebufferCreateInfo *pCreateInfo,
+ const VkAllocationCallbacks *pAllocator,
+ VkFramebuffer *pFramebuffer)
+{
+ struct vn_device *dev = vn_device_from_handle(device);
+ const VkAllocationCallbacks *alloc =
+ pAllocator ? pAllocator : &dev->base.base.alloc;
+
+ struct vn_framebuffer *fb = vk_zalloc(alloc, sizeof(*fb), VN_DEFAULT_ALIGN,
+ VK_SYSTEM_ALLOCATION_SCOPE_OBJECT);
+ if (!fb)
+ return vn_error(dev->instance, VK_ERROR_OUT_OF_HOST_MEMORY);
+
+ vn_object_base_init(&fb->base, VK_OBJECT_TYPE_FRAMEBUFFER, &dev->base);
+
+ VkFramebuffer fb_handle = vn_framebuffer_to_handle(fb);
+ vn_async_vkCreateFramebuffer(dev->instance, device, pCreateInfo, NULL,
+ &fb_handle);
+
+ *pFramebuffer = fb_handle;
+
+ return VK_SUCCESS;
+}
+
+void
+vn_DestroyFramebuffer(VkDevice device,
+ VkFramebuffer framebuffer,
+ const VkAllocationCallbacks *pAllocator)
+{
+ struct vn_device *dev = vn_device_from_handle(device);
+ struct vn_framebuffer *fb = vn_framebuffer_from_handle(framebuffer);
+ const VkAllocationCallbacks *alloc =
+ pAllocator ? pAllocator : &dev->base.base.alloc;
+
+ if (!fb)
+ return;
+
+ vn_async_vkDestroyFramebuffer(dev->instance, device, framebuffer, NULL);
+
+ vn_object_base_fini(&fb->base);
+ vk_free(alloc, fb);
+}
diff --git a/src/virtio/vulkan/vn_render_pass.h b/src/virtio/vulkan/vn_render_pass.h
new file mode 100644
index 00000000000..34bf31c317e
--- /dev/null
+++ b/src/virtio/vulkan/vn_render_pass.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2019 Google LLC
+ * SPDX-License-Identifier: MIT
+ *
+ * based in part on anv and radv which are:
+ * Copyright © 2015 Intel Corporation
+ * Copyright © 2016 Red Hat.
+ * Copyright © 2016 Bas Nieuwenhuizen
+ */
+
+#ifndef VN_RENDER_PASS_H
+#define VN_RENDER_PASS_H
+
+#include "vn_common.h"
+
+struct vn_render_pass {
+ struct vn_object_base base;
+
+ VkExtent2D granularity;
+};
+VK_DEFINE_NONDISP_HANDLE_CASTS(vn_render_pass,
+ base.base,
+ VkRenderPass,
+ VK_OBJECT_TYPE_RENDER_PASS)
+
+struct vn_framebuffer {
+ struct vn_object_base base;
+};
+VK_DEFINE_NONDISP_HANDLE_CASTS(vn_framebuffer,
+ base.base,
+ VkFramebuffer,
+ VK_OBJECT_TYPE_FRAMEBUFFER)
+
+#endif /* VN_RENDER_PASS_H */
More information about the mesa-commit
mailing list