1#ifndef _VKIMAGEWITHMEMORY_HPP 2#define _VKIMAGEWITHMEMORY_HPP 3/*------------------------------------------------------------------------- 4 * Vulkan CTS Framework 5 * -------------------- 6 * 7 * Copyright (c) 2016 The Khronos Group Inc. 8 * Copyright (c) 2016 Google Inc. 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); 11 * you may not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 * 22 *//*! 23 * \file 24 * \brief Image backed with memory 25 *//*--------------------------------------------------------------------*/ 26 27#include "vkDefs.hpp" 28#include "vkMemUtil.hpp" 29#include "vkQueryUtil.hpp" 30#include "vkRef.hpp" 31#include "vkRefUtil.hpp" 32 33namespace vk 34{ 35class ImageWithMemory 36{ 37public: 38 ImageWithMemory (const vk::DeviceInterface& vk, 39 const vk::VkDevice device, 40 vk::Allocator& allocator, 41 const vk::VkImageCreateInfo& imageCreateInfo, 42 const vk::MemoryRequirement memoryRequirement) 43 44 : m_image (createImage(vk, device, &imageCreateInfo)) 45 , m_allocation (allocator.allocate(getImageMemoryRequirements(vk, device, *m_image), memoryRequirement)) 46 { 47 VK_CHECK(vk.bindImageMemory(device, *m_image, m_allocation->getMemory(), m_allocation->getOffset())); 48 } 49 50 const vk::VkImage& get (void) const { return *m_image; } 51 const vk::VkImage& operator* (void) const { return get(); } 52 vk::Allocation& getAllocation (void) const { return *m_allocation; } 53 54private: 55 const vk::Unique<vk::VkImage> m_image; 56 const de::UniquePtr<vk::Allocation> m_allocation; 57 58 // "deleted" 59 ImageWithMemory (const ImageWithMemory&); 60 ImageWithMemory& operator= (const ImageWithMemory&); 61}; 62} // vk 63 64#endif // _VKIMAGEWITHMEMORY_HPP 65