#ifndef _VKTDRAWBUFFEROBJECTUTIL_HPP #define _VKTDRAWBUFFEROBJECTUTIL_HPP /*------------------------------------------------------------------------ * Vulkan Conformance Tests * ------------------------ * * Copyright (c) 2015 The Khronos Group Inc. * Copyright (c) 2015 Intel Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *//*! * \file * \brief Buffer Object Util *//*--------------------------------------------------------------------*/ #include "vkMemUtil.hpp" #include "vkRefUtil.hpp" #include "deSharedPtr.hpp" namespace vkt { namespace Draw { class Buffer { public: static de::SharedPtr create (const vk::DeviceInterface& vk, vk::VkDevice device, const vk::VkBufferCreateInfo &createInfo); static de::SharedPtr createAndAlloc (const vk::DeviceInterface& vk, vk::VkDevice device, const vk::VkBufferCreateInfo& createInfo, vk::Allocator& allocator, vk::MemoryRequirement allocationMemoryProperties = vk::MemoryRequirement::Any); Buffer (const vk::DeviceInterface &vk, vk::VkDevice device, vk::Move object); void bindMemory (de::MovePtr allocation); vk::VkBuffer object (void) const { return *m_object; } vk::Allocation getBoundMemory (void) const { return *m_allocation; } private: Buffer (const Buffer& other); // Not allowed! Buffer& operator= (const Buffer& other); // Not allowed! de::MovePtr m_allocation; vk::Unique m_object; const vk::DeviceInterface& m_vk; vk::VkDevice m_device; }; void bufferBarrier (const vk::DeviceInterface& vk, vk::VkCommandBuffer cmdBuffer, vk::VkBuffer buffer, vk::VkAccessFlags srcAccessMask, vk::VkAccessFlags dstAccessMask, vk::VkPipelineStageFlags srcStageMask, vk::VkPipelineStageFlags dstStageMask); } // Draw } // vkt #endif // _VKTDRAWBUFFEROBJECTUTIL_HPP