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