1 /*------------------------------------------------------------------------
2 * Vulkan Conformance Tests
3 * ------------------------
5 * Copyright (c) 2015 The Khronos Group Inc.
6 * Copyright (c) 2015 Intel Corporation
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and/or associated documentation files (the
10 * "Materials"), to deal in the Materials without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Materials, and to
13 * permit persons to whom the Materials are furnished to do so, subject to
14 * the following conditions:
16 * The above copyright notice(s) and this permission notice shall be included
17 * in all copies or substantial portions of the Materials.
19 * The Materials are Confidential Information as defined by the
20 * Khronos Membership Agreement until designated non-confidential by Khronos,
21 * at which point this condition clause shall be removed.
23 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
26 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
27 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
28 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
29 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
33 * \brief Buffer Object Util
34 *//*--------------------------------------------------------------------*/
36 #include "vktDrawBufferObjectUtil.hpp"
38 #include "vkQueryUtil.hpp"
45 Buffer::Buffer (const vk::DeviceInterface& vk, vk::VkDevice device, vk::Move<vk::VkBuffer> object_)
46 : m_allocation (DE_NULL)
53 void Buffer::bindMemory (de::MovePtr<vk::Allocation> allocation)
55 DE_ASSERT(allocation);
56 VK_CHECK(m_vk.bindBufferMemory(m_device, *m_object, allocation->getMemory(), allocation->getOffset()));
58 DE_ASSERT(!m_allocation);
59 m_allocation = allocation;
62 de::SharedPtr<Buffer> Buffer::createAndAlloc (const vk::DeviceInterface& vk,
64 const vk::VkBufferCreateInfo &createInfo,
65 vk::Allocator &allocator,
66 vk::MemoryRequirement memoryRequirement)
68 de::SharedPtr<Buffer> ret = create(vk, device, createInfo);
70 vk::VkMemoryRequirements bufferRequirements = vk::getBufferMemoryRequirements(vk, device, ret->object());
71 ret->bindMemory(allocator.allocate(bufferRequirements, memoryRequirement));
75 de::SharedPtr<Buffer> Buffer::create (const vk::DeviceInterface& vk,
77 const vk::VkBufferCreateInfo& createInfo)
79 return de::SharedPtr<Buffer>(new Buffer(vk, device, vk::createBuffer(vk, device, &createInfo)));