123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#ifndef _VKDEFS_HPP
223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#define _VKDEFS_HPP
323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos/*-------------------------------------------------------------------------
4846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * Vulkan CTS Framework
5846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * --------------------
623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *
7846cc3ce8e721a972ef38c44e24da49ea96110caPyry Haulos * Copyright (c) 2015 Google Inc.
823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *
9978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License");
10978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * you may not use this file except in compliance with the License.
11978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * You may obtain a copy of the License at
1223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *
13978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos *      http://www.apache.org/licenses/LICENSE-2.0
1423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *
15978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Unless required by applicable law or agreed to in writing, software
16978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS,
17978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * See the License for the specific language governing permissions and
19978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * limitations under the License.
2023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *
2123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *//*!
2223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos * \file
2323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos * \brief Vulkan utilites.
2423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *//*--------------------------------------------------------------------*/
2523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
2623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#include "tcuDefs.hpp"
2723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
28add785f6efc8483d02b8e96424f7ad0104767cb0Chris Forbes#if (DE_OS == DE_OS_ANDROID) && defined(__ARM_ARCH) && defined(__ARM_32BIT_STATE)
29ac48db86485234b01fd769074f5a3d954055512bMark Adams#	define VKAPI_ATTR __attribute__((pcs("aapcs-vfp")))
3023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#else
3168e7282426d639b54d15c4710d97ba97e72c76efPyry Haulos#	define VKAPI_ATTR
3223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#endif
3323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
3468e7282426d639b54d15c4710d97ba97e72c76efPyry Haulos#if (DE_OS == DE_OS_WIN32) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
3568e7282426d639b54d15c4710d97ba97e72c76efPyry Haulos#	define VKAPI_CALL __stdcall
3623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#else
3768e7282426d639b54d15c4710d97ba97e72c76efPyry Haulos#	define VKAPI_CALL
3823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#endif
3923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
4068e7282426d639b54d15c4710d97ba97e72c76efPyry Haulos#define VK_DEFINE_HANDLE(NAME, TYPE)					typedef struct NAME##_s* NAME
4168e7282426d639b54d15c4710d97ba97e72c76efPyry Haulos#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(NAME, TYPE)	typedef Handle<TYPE> NAME
4223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
4312021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos#define VK_DEFINE_PLATFORM_TYPE(NAME, COMPATIBLE)		\
4412021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulosnamespace pt {											\
4512021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulosstruct NAME {											\
4612021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	COMPATIBLE internal;								\
4712021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	explicit NAME (COMPATIBLE internal_)				\
4812021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos		: internal(internal_) {}						\
4912021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos};														\
5012021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos} // pt
5112021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
52dd99172aee72493b3e508dc8990e7eac95a40f8fPyry Haulos#define VK_MAKE_VERSION(MAJOR, MINOR, PATCH)	(((deUint32)(MAJOR) << 22u) | ((deUint32)(MINOR) << 12u) | (deUint32)(PATCH))
53dd99172aee72493b3e508dc8990e7eac95a40f8fPyry Haulos#define VK_BIT(NUM)								(1u<<(deUint32)(NUM))
5423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
55ee4d301637e7d218bc690d82d73fe080740927b3Mais Alnasser#define VK_VERSION_MAJOR(version)				((deUint32)(version) >> 22)
56ee4d301637e7d218bc690d82d73fe080740927b3Mais Alnasser#define VK_VERSION_MINOR(version)				(((deUint32)(version) >> 12) & 0x3ff)
57ee4d301637e7d218bc690d82d73fe080740927b3Mais Alnasser#define VK_VERSION_PATCH(version)				((deUint32)(version) & 0xfff)
5815c47384395c0330d13b1dd91ab9f9a5564970fcPiers Daniell
5923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#define VK_CHECK(EXPR)							vk::checkResult((EXPR), #EXPR, __FILE__, __LINE__)
6023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#define VK_CHECK_MSG(EXPR, MSG)					vk::checkResult((EXPR), MSG, __FILE__, __LINE__)
6123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
6223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos/*--------------------------------------------------------------------*//*!
6323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos * \brief Vulkan utilities
6423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos *//*--------------------------------------------------------------------*/
6523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosnamespace vk
6623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
6723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
6823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulostypedef deUint64	VkDeviceSize;
6923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulostypedef deUint32	VkSampleMask;
70b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulostypedef deUint32	VkBool32;
7168e7282426d639b54d15c4710d97ba97e72c76efPyry Haulostypedef deUint32	VkFlags;
7223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
73b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos// enum HandleType { HANDLE_TYPE_INSTANCE, ... };
74b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos#include "vkHandleType.inl"
7523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
76b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulostemplate<HandleType Type>
77b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosclass Handle
78b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos{
79b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulospublic:
80b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos				Handle		(void) {} // \note Left uninitialized on purpose
81b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos				Handle		(deUint64 internal) : m_internal(internal) {}
8223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
83b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	Handle&		operator=	(deUint64 internal)					{ m_internal = internal; return *this;			}
8423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
85b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	bool		operator==	(const Handle<Type>& other) const	{ return this->m_internal == other.m_internal;	}
86b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	bool		operator!=	(const Handle<Type>& other) const	{ return this->m_internal != other.m_internal;	}
8723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
88b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	bool		operator!	(void) const						{ return !m_internal;							}
89cb8331f6588e0b2de91eecbe9a99127eeae00b96Pyry Haulos
90b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	deUint64	getInternal	(void) const						{ return m_internal;							}
91cb8331f6588e0b2de91eecbe9a99127eeae00b96Pyry Haulos
92b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	enum { HANDLE_TYPE = Type };
93b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
94b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprivate:
95b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	deUint64	m_internal;
9623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos};
9723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
98b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos#include "vkBasicTypes.inl"
99b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
1005e2d5b22247f074b52674f15d6cf64e477bac0d8Pyry Haulos#define VK_CORE_FORMAT_LAST		((vk::VkFormat)(vk::VK_FORMAT_ASTC_12x12_SRGB_BLOCK+1))
1015e2d5b22247f074b52674f15d6cf64e477bac0d8Pyry Haulos
102fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulosenum SpirvVersion
103fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulos{
104fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulos	SPIRV_VERSION_1_0	= 0,	//!< SPIR-V 1.0
105d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	SPIRV_VERSION_1_1	= 1,	//!< SPIR-V 1.1
106d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	SPIRV_VERSION_1_2	= 2,	//!< SPIR-V 1.2
107d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	SPIRV_VERSION_1_3	= 3,	//!< SPIR-V 1.3
108fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulos
109fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulos	SPIRV_VERSION_LAST
110fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulos};
111fa7a45c9bcb909be38ffd55549beb6db5115a65bPyry Haulos
112d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanintypedef struct
113d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin{
114d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	deUint32	magic;
115d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	deUint32	version;
116d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	deUint32	generator;
117d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin	deUint32	bound;
118d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin} SpirvBinaryHeader;
119d784ada312e9c0f2d0262a87402e2ff6c6160a66Boris Zanin
12012021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulosnamespace wsi
12112021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos{
12212021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
12312021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulosenum Type
12412021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos{
12512021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_XLIB = 0,
12612021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_XCB,
12712021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_WAYLAND,
12812021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_MIR,
12912021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_ANDROID,
13012021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_WIN32,
13112021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
13212021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos	TYPE_LAST
13312021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos};
13412021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
13512021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos} // wsi
13612021ac26c6d6f8923f526bd7635dcf68e0c4061Pyry Haulos
13768e7282426d639b54d15c4710d97ba97e72c76efPyry Haulostypedef VKAPI_ATTR void		(VKAPI_CALL* PFN_vkVoidFunction)					(void);
138b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
139931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulostypedef VKAPI_ATTR void*	(VKAPI_CALL* PFN_vkAllocationFunction)				(void*						pUserData,
140931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						size,
141931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						alignment,
142931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkSystemAllocationScope	allocationScope);
143931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulostypedef VKAPI_ATTR void*	(VKAPI_CALL* PFN_vkReallocationFunction)			(void*						pUserData,
144931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 void*						pOriginal,
145931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						size,
146931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						alignment,
147931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkSystemAllocationScope	allocationScope);
148931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulostypedef VKAPI_ATTR void		(VKAPI_CALL* PFN_vkFreeFunction)					(void*						pUserData,
149931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 void*						pMem);
150931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulostypedef VKAPI_ATTR void		(VKAPI_CALL* PFN_vkInternalAllocationNotification)	(void*						pUserData,
151931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						size,
152931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkInternalAllocationType	allocationType,
153931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkSystemAllocationScope	allocationScope);
154931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulostypedef VKAPI_ATTR void		(VKAPI_CALL* PFN_vkInternalFreeNotification)		(void*						pUserData,
155931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						size,
156931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkInternalAllocationType	allocationType,
157931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkSystemAllocationScope	allocationScope);
158931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos
159931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulostypedef VKAPI_ATTR VkBool32	(VKAPI_CALL* PFN_vkDebugReportCallbackEXT)			(VkDebugReportFlagsEXT		flags,
160931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 VkDebugReportObjectTypeEXT	objectType,
161931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 deUint64					object,
162931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 size_t						location,
163931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 deInt32					messageCode,
164931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 const char*				pLayerPrefix,
165931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 const char*				pMessage,
166931d1df9bc5ac16200e2e63dfce17dcbbbb35d36Pyry Haulos																				 void*						pUserData);
167b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
16823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#include "vkStructTypes.inl"
16923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
170b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosextern "C"
171b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos{
172b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos#include "vkFunctionPointerTypes.inl"
173b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos}
174b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
17523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosclass PlatformInterface
17623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
17723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulospublic:
17823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#include "vkVirtualPlatformInterface.inl"
179b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
180b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprotected:
181b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos						PlatformInterface	(void) {}
182b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
183b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprivate:
184b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos						PlatformInterface	(const PlatformInterface&);
185b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	PlatformInterface&	operator=			(const PlatformInterface&);
186b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos};
187b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
188b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosclass InstanceInterface
189b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos{
190b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulospublic:
191b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos#include "vkVirtualInstanceInterface.inl"
192b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
193b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprotected:
194b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos						InstanceInterface	(void) {}
195b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
196b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprivate:
197b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos						InstanceInterface	(const InstanceInterface&);
198b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	InstanceInterface&	operator=			(const InstanceInterface&);
19923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos};
20023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
20123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosclass DeviceInterface
20223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
20323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulospublic:
20423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#include "vkVirtualDeviceInterface.inl"
205b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
206b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprotected:
207b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos						DeviceInterface		(void) {}
208b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos
209b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosprivate:
210b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos						DeviceInterface		(const DeviceInterface&);
211b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulos	DeviceInterface&	operator=			(const DeviceInterface&);
21223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos};
21323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
21423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosclass Error : public tcu::TestError
21523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
21623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulospublic:
21723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos					Error				(VkResult error, const char* message, const char* expr, const char* file, int line);
21823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos					Error				(VkResult error, const std::string& message);
21923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	virtual			~Error				(void) throw();
22023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
22123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	VkResult		getError			(void) const { return m_error; }
22223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
22323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosprivate:
22423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	const VkResult	m_error;
22523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos};
22623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
22723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosclass OutOfMemoryError : public tcu::ResourceError
22823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos{
22923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulospublic:
23023c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos					OutOfMemoryError	(VkResult error, const char* message, const char* expr, const char* file, int line);
23123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos					OutOfMemoryError	(VkResult error, const std::string& message);
23223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	virtual			~OutOfMemoryError	(void) throw();
23323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
23423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	VkResult		getError			(void) const { return m_error; }
23523c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
23623c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulosprivate:
23723c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos	const VkResult	m_error;
23823c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos};
23923c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
240b1a7d2198497be32dfc22386f99945656ff4080ePyry Haulosvoid			checkResult			(VkResult result, const char* message, const char* file, int line);
24123c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
24223c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos} // vk
24323c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos
24423c1f9fbfacc654ff2115e74466bb781a058bb9fPyry Haulos#endif // _VKDEFS_HPP
245