1/*------------------------------------------------------------------------ 2 * Vulkan Conformance Tests 3 * ------------------------ 4 * 5 * Copyright (c) 2015 The Khronos Group Inc. 6 * Copyright (c) 2015 Intel Corporation 7 * 8 * Licensed under the Apache License, Version 2.0 (the "License"); 9 * you may not use this file except in compliance with the License. 10 * You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, software 15 * distributed under the License is distributed on an "AS IS" BASIS, 16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 * See the License for the specific language governing permissions and 18 * limitations under the License. 19 * 20 *//*! 21 * \file 22 * \brief Buffer Object Util 23 *//*--------------------------------------------------------------------*/ 24 25#include "vktDrawBufferObjectUtil.hpp" 26 27#include "vkQueryUtil.hpp" 28 29namespace vkt 30{ 31namespace Draw 32{ 33 34Buffer::Buffer (const vk::DeviceInterface& vk, vk::VkDevice device, vk::Move<vk::VkBuffer> object_) 35 : m_allocation (DE_NULL) 36 , m_object (object_) 37 , m_vk (vk) 38 , m_device (device) 39{ 40} 41 42void Buffer::bindMemory (de::MovePtr<vk::Allocation> allocation) 43{ 44 DE_ASSERT(allocation); 45 VK_CHECK(m_vk.bindBufferMemory(m_device, *m_object, allocation->getMemory(), allocation->getOffset())); 46 47 DE_ASSERT(!m_allocation); 48 m_allocation = allocation; 49} 50 51de::SharedPtr<Buffer> Buffer::createAndAlloc (const vk::DeviceInterface& vk, 52 vk::VkDevice device, 53 const vk::VkBufferCreateInfo &createInfo, 54 vk::Allocator &allocator, 55 vk::MemoryRequirement memoryRequirement) 56{ 57 de::SharedPtr<Buffer> ret = create(vk, device, createInfo); 58 59 vk::VkMemoryRequirements bufferRequirements = vk::getBufferMemoryRequirements(vk, device, ret->object()); 60 ret->bindMemory(allocator.allocate(bufferRequirements, memoryRequirement)); 61 return ret; 62} 63 64de::SharedPtr<Buffer> Buffer::create (const vk::DeviceInterface& vk, 65 vk::VkDevice device, 66 const vk::VkBufferCreateInfo& createInfo) 67{ 68 return de::SharedPtr<Buffer>(new Buffer(vk, device, vk::createBuffer(vk, device, &createInfo))); 69} 70 71} // Draw 72} // vkt 73