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,
35 												 VkDevice								device,
36 												 VkPipelineCache						pipelineCache,
37 												 const VkGraphicsPipelineCreateInfo*	pCreateInfo,
38 												 const VkAllocationCallbacks*			pAllocator = DE_NULL);
39 Move<VkPipeline>		createComputePipeline	(const DeviceInterface&					vk,
40 												 VkDevice								device,
41 												 VkPipelineCache						pipelineCache,
42 												 const VkComputePipelineCreateInfo*		pCreateInfo,
43 												 const VkAllocationCallbacks*			pAllocator = DE_NULL);
44 Move<VkPipeline>		createRayTracingPipelineNV(const DeviceInterface&					vk,
45 												 VkDevice								device,
46 												 VkPipelineCache						pipelineCache,
47 												 const VkRayTracingPipelineCreateInfoNV*	pCreateInfo,
48 												 const VkAllocationCallbacks*			pAllocator = DE_NULL);
49 Move<VkPipeline>		createRayTracingPipelineKHR	(const DeviceInterface&					vk,
50 												 VkDevice									device,
51 												 VkDeferredOperationKHR						deferredOperation,
52 												 VkPipelineCache							pipelineCache,
53 												 const VkRayTracingPipelineCreateInfoKHR*	pCreateInfo,
54 												 const VkAllocationCallbacks*				pAllocator = DE_NULL);
55 Move<VkCommandBuffer>	allocateCommandBuffer	(const DeviceInterface& vk, VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo);
56 Move<VkDescriptorSet>	allocateDescriptorSet	(const DeviceInterface& vk, VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo);
57 
58 Move<VkSemaphore>		createSemaphore			(const DeviceInterface&			vk,
59 												 VkDevice						device,
60 												 VkSemaphoreCreateFlags			flags		= (VkSemaphoreCreateFlags)0,
61 												 const VkAllocationCallbacks*	pAllocator	= DE_NULL);
62 
63 Move<VkSemaphore>		createSemaphoreType		(const DeviceInterface&			vk,
64 												 VkDevice						device,
65 												 VkSemaphoreType				type,
66 												 VkSemaphoreCreateFlags			flags			= (VkSemaphoreCreateFlags)0,
67 												 const deUint64					initialValue	= 0,
68 												 const VkAllocationCallbacks*	pAllocator		= DE_NULL);
69 
70 Move<VkFence>			createFence				(const DeviceInterface&			vk,
71 												 VkDevice						device,
72 												 VkFenceCreateFlags				flags		= (VkFenceCreateFlags)0,
73 												 const VkAllocationCallbacks*	pAllocator	= DE_NULL);
74 
75 Move<VkCommandPool>		createCommandPool		(const DeviceInterface&			vk,
76 												 VkDevice						device,
77 												 VkCommandPoolCreateFlags		flags,
78 												 deUint32						queueFamilyIndex,
79 												 const VkAllocationCallbacks*	pAllocator	= DE_NULL);
80 
81 Move<VkCommandBuffer>	allocateCommandBuffer	(const DeviceInterface&			vk,
82 												 VkDevice						device,
83 												 VkCommandPool					commandPool,
84 												 VkCommandBufferLevel			level);
85 
86 Move<VkEvent>			createEvent				(const DeviceInterface&			vk,
87 												 VkDevice						device,
88 												 VkEventCreateFlags				flags = (VkEventCreateFlags)0u,
89 												 const VkAllocationCallbacks*	pAllocateInfo = DE_NULL);
90 
91 } // vk
92 
93 #endif // _VKREFUTIL_HPP
94