1 /*-------------------------------------------------------------------------
2 * Vulkan CTS Framework
3 * --------------------
4 *
5 * Copyright (c) 2015 Google Inc.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 *//*!
20 * \file
21 * \brief Vulkan object reference holder utilities.
22 *//*--------------------------------------------------------------------*/
23
24 #include "vkRefUtil.hpp"
25
26 namespace vk
27 {
28
29 #include "vkRefUtilImpl.inl"
30
createGraphicsPipeline(const DeviceInterface & vk,VkDevice device,VkPipelineCache pipelineCache,const VkGraphicsPipelineCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator)31 Move<VkPipeline> createGraphicsPipeline (const DeviceInterface& vk,
32 VkDevice device,
33 VkPipelineCache pipelineCache,
34 const VkGraphicsPipelineCreateInfo* pCreateInfo,
35 const VkAllocationCallbacks* pAllocator)
36 {
37 VkPipeline object = 0;
38 VK_CHECK(vk.createGraphicsPipelines(device, pipelineCache, 1u, pCreateInfo, pAllocator, &object));
39 return Move<VkPipeline>(check<VkPipeline>(object), Deleter<VkPipeline>(vk, device, pAllocator));
40 }
41
createComputePipeline(const DeviceInterface & vk,VkDevice device,VkPipelineCache pipelineCache,const VkComputePipelineCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator)42 Move<VkPipeline> createComputePipeline (const DeviceInterface& vk,
43 VkDevice device,
44 VkPipelineCache pipelineCache,
45 const VkComputePipelineCreateInfo* pCreateInfo,
46 const VkAllocationCallbacks* pAllocator)
47 {
48 VkPipeline object = 0;
49 VK_CHECK(vk.createComputePipelines(device, pipelineCache, 1u, pCreateInfo, pAllocator, &object));
50 return Move<VkPipeline>(check<VkPipeline>(object), Deleter<VkPipeline>(vk, device, pAllocator));
51 }
52
allocateCommandBuffer(const DeviceInterface & vk,VkDevice device,const VkCommandBufferAllocateInfo * pAllocateInfo)53 Move<VkCommandBuffer> allocateCommandBuffer (const DeviceInterface& vk, VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo)
54 {
55 VkCommandBuffer object = 0;
56 DE_ASSERT(pAllocateInfo->commandBufferCount == 1u);
57 VK_CHECK(vk.allocateCommandBuffers(device, pAllocateInfo, &object));
58 return Move<VkCommandBuffer>(check<VkCommandBuffer>(object), Deleter<VkCommandBuffer>(vk, device, pAllocateInfo->commandPool));
59 }
60
allocateDescriptorSet(const DeviceInterface & vk,VkDevice device,const VkDescriptorSetAllocateInfo * pAllocateInfo)61 Move<VkDescriptorSet> allocateDescriptorSet (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo)
62 {
63 VkDescriptorSet object = 0;
64 DE_ASSERT(pAllocateInfo->descriptorSetCount == 1u);
65 VK_CHECK(vk.allocateDescriptorSets(device, pAllocateInfo, &object));
66 return Move<VkDescriptorSet>(check<VkDescriptorSet>(object), Deleter<VkDescriptorSet>(vk, device, pAllocateInfo->descriptorPool));
67 }
68
69 } // vk
70