xref: /aosp_15_r20/external/deqp/external/vulkancts/framework/vulkan/vkRefUtil.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1 #ifndef _VKREFUTIL_HPP
2 #define _VKREFUTIL_HPP
3 /*-------------------------------------------------------------------------
4  * Vulkan CTS Framework
5  * --------------------
6  *
7  * Copyright (c) 2015 Google Inc.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  *//*!
22  * \file
23  * \brief Vulkan object reference holder utilities.
24  *//*--------------------------------------------------------------------*/
25 
26 #include "vkDefs.hpp"
27 #include "vkRef.hpp"
28 
29 namespace vk
30 {
31 
32 #include "vkRefUtil.inl"
33 
34 Move<VkPipeline> createGraphicsPipeline(const DeviceInterface &vk, VkDevice device, VkPipelineCache pipelineCache,
35                                         const VkGraphicsPipelineCreateInfo *pCreateInfo,
36                                         const VkAllocationCallbacks *pAllocator = DE_NULL);
37 Move<VkPipeline> createComputePipeline(const DeviceInterface &vk, VkDevice device, VkPipelineCache pipelineCache,
38                                        const VkComputePipelineCreateInfo *pCreateInfo,
39                                        const VkAllocationCallbacks *pAllocator = DE_NULL);
40 #ifndef CTS_USES_VULKANSC
41 Move<VkPipeline> createRayTracingPipelineNV(const DeviceInterface &vk, VkDevice device, VkPipelineCache pipelineCache,
42                                             const VkRayTracingPipelineCreateInfoNV *pCreateInfo,
43                                             const VkAllocationCallbacks *pAllocator = DE_NULL);
44 Move<VkPipeline> createRayTracingPipelineKHR(const DeviceInterface &vk, VkDevice device,
45                                              VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache,
46                                              const VkRayTracingPipelineCreateInfoKHR *pCreateInfo,
47                                              const VkAllocationCallbacks *pAllocator = DE_NULL);
48 #endif // CTS_USES_VULKANSC
49 
50 Move<VkCommandBuffer> allocateCommandBuffer(const DeviceInterface &vk, VkDevice device,
51                                             const VkCommandBufferAllocateInfo *pAllocateInfo);
52 void allocateCommandBuffers(const DeviceInterface &vk, VkDevice device,
53                             const VkCommandBufferAllocateInfo *pAllocateInfo, Move<VkCommandBuffer> *pCommandBuffers);
54 Move<VkDescriptorSet> allocateDescriptorSet(const DeviceInterface &vk, VkDevice device,
55                                             const VkDescriptorSetAllocateInfo *pAllocateInfo);
56 
57 Move<VkSemaphore> createSemaphore(const DeviceInterface &vk, VkDevice device,
58                                   VkSemaphoreCreateFlags flags            = (VkSemaphoreCreateFlags)0,
59                                   const VkAllocationCallbacks *pAllocator = DE_NULL);
60 
61 Move<VkSemaphore> createSemaphoreType(const DeviceInterface &vk, VkDevice device, VkSemaphoreType type,
62                                       VkSemaphoreCreateFlags flags            = (VkSemaphoreCreateFlags)0,
63                                       const uint64_t initialValue             = 0,
64                                       const VkAllocationCallbacks *pAllocator = DE_NULL);
65 
66 Move<VkFence> createFence(const DeviceInterface &vk, VkDevice device, VkFenceCreateFlags flags = (VkFenceCreateFlags)0,
67                           const VkAllocationCallbacks *pAllocator = DE_NULL);
68 
69 Move<VkCommandPool> createCommandPool(const DeviceInterface &vk, VkDevice device, VkCommandPoolCreateFlags flags,
70                                       uint32_t queueFamilyIndex, const VkAllocationCallbacks *pAllocator = DE_NULL);
71 
72 Move<VkCommandBuffer> allocateCommandBuffer(const DeviceInterface &vk, VkDevice device, VkCommandPool commandPool,
73                                             VkCommandBufferLevel level);
74 
75 Move<VkEvent> createEvent(const DeviceInterface &vk, VkDevice device, VkEventCreateFlags flags = (VkEventCreateFlags)0u,
76                           const VkAllocationCallbacks *pAllocateInfo = DE_NULL);
77 
78 #ifdef CTS_USES_VULKANSC
79 Move<VkShaderModule> createShaderModule(const DeviceInterface &vk, VkDevice device,
80                                         const VkShaderModuleCreateInfo *pCreateInfo,
81                                         const VkAllocationCallbacks *pAllocator = DE_NULL);
82 #endif // CTS_USES_VULKANSC
83 
84 } // namespace vk
85 
86 #endif // _VKREFUTIL_HPP
87