diff options
author | Jason Ekstrand <jason.ekstrand@collabora.com> | 2022-02-07 12:49:52 -0600 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-02-11 08:06:24 +0000 |
commit | a10b6d1c6fc52c94a1d7aa2cd04e8aa66ba89911 (patch) | |
tree | a05b509ac269eb7c8eed5ba1880797cfac50fe3e | |
parent | 5e263cc3243f72b27df16c167e9809db13a7df6b (diff) |
vulkan: Add a common vk_command_pool base struct
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14917>
-rw-r--r-- | src/vulkan/runtime/meson.build | 2 | ||||
-rw-r--r-- | src/vulkan/runtime/vk_command_pool.c | 51 | ||||
-rw-r--r-- | src/vulkan/runtime/vk_command_pool.h | 62 |
3 files changed, 115 insertions, 0 deletions
diff --git a/src/vulkan/runtime/meson.build b/src/vulkan/runtime/meson.build index b2725bc6b71..b9c4ed759c1 100644 --- a/src/vulkan/runtime/meson.build +++ b/src/vulkan/runtime/meson.build @@ -27,6 +27,8 @@ vulkan_runtime_files = files( 'vk_cmd_copy.c', 'vk_command_buffer.c', 'vk_command_buffer.h', + 'vk_command_pool.c', + 'vk_command_pool.h', 'vk_debug_report.c', 'vk_debug_report.h', 'vk_debug_utils.c', diff --git a/src/vulkan/runtime/vk_command_pool.c b/src/vulkan/runtime/vk_command_pool.c new file mode 100644 index 00000000000..cfb18bb8150 --- /dev/null +++ b/src/vulkan/runtime/vk_command_pool.c @@ -0,0 +1,51 @@ +/* + * Copyright © 2015 Intel Corporation + * Copyright © 2022 Collabora, Ltd + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "vk_command_pool.h" + +#include "vk_common_entrypoints.h" +#include "vk_device.h" + +VkResult MUST_CHECK +vk_command_pool_init(struct vk_command_pool *pool, + struct vk_device *device, + const VkCommandPoolCreateInfo *pCreateInfo, + const VkAllocationCallbacks *pAllocator) +{ + memset(pool, 0, sizeof(*pool)); + vk_object_base_init(device, &pool->base, + VK_OBJECT_TYPE_COMMAND_POOL); + + pool->flags = pCreateInfo->flags; + pool->queue_family_index = pCreateInfo->queueFamilyIndex; + pool->alloc = pAllocator ? *pAllocator : device->alloc; + + return VK_SUCCESS; +} + +void +vk_command_pool_finish(struct vk_command_pool *pool) +{ + vk_object_base_finish(&pool->base); +} diff --git a/src/vulkan/runtime/vk_command_pool.h b/src/vulkan/runtime/vk_command_pool.h new file mode 100644 index 00000000000..0eb43be45cd --- /dev/null +++ b/src/vulkan/runtime/vk_command_pool.h @@ -0,0 +1,62 @@ +/* + * Copyright © 2022 Collabora, Ltd + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef VK_COMMAND_POOL_H +#define VK_COMMAND_POOL_H + +#include "vk_object.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct vk_command_pool { + struct vk_object_base base; + + /** VkCommandPoolCreateInfo::flags */ + VkCommandPoolCreateFlags flags; + + /** VkCommandPoolCreateInfo::queueFamilyIndex */ + uint32_t queue_family_index; + + /** Allocator passed to vkCreateCommandPool() */ + VkAllocationCallbacks alloc; +}; + +VK_DEFINE_NONDISP_HANDLE_CASTS(vk_command_pool, base, VkCommandPool, + VK_OBJECT_TYPE_COMMAND_POOL) + +VkResult MUST_CHECK +vk_command_pool_init(struct vk_command_pool *pool, + struct vk_device *device, + const VkCommandPoolCreateInfo *pCreateInfo, + const VkAllocationCallbacks *pAllocator); + +void +vk_command_pool_finish(struct vk_command_pool *pool); + +#ifdef __cplusplus +} +#endif + +#endif /* VK_COMMAND_POOL_H */ |