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