blob: 4f839a6a749d09ba6fdc834071be0c1e4a86cd2a [file] [log] [blame]
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001// Copyright (c) 2015-2018 The Khronos Group Inc.
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06003// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06007// http://www.apache.org/licenses/LICENSE-2.0
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06009// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014
15// This header is generated from the Khronos Vulkan XML API Registry.
16
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017#ifndef VULKAN_HPP
18#define VULKAN_HPP
19
20#include <algorithm>
21#include <array>
22#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024#include <cstdint>
25#include <cstring>
26#include <initializer_list>
27#include <string>
28#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030#include <type_traits>
31#include <vulkan/vulkan.h>
32#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33# include <memory>
34# include <vector>
35#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070036static_assert( VK_HEADER_VERSION == 67 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060037
38// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
39// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020040#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
Mark Lobodzinski36c33862017-02-13 10:15:53 -070041# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
42# define VULKAN_HPP_TYPESAFE_CONVERSION
43# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060044#endif
45
46#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
47# if defined(__clang__)
48# if __has_feature(cxx_unrestricted_unions)
49# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
50# endif
51# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060052# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060053# if 40600 <= GCC_VERSION
54# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
55# endif
56# elif defined(_MSC_VER)
57# if 1900 <= _MSC_VER
58# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
59# endif
60# endif
61#endif
62
Mark Lobodzinski2d589822016-12-12 09:44:34 -070063#if !defined(VULKAN_HPP_INLINE)
64# if defined(__clang___)
65# if __has_attribute(always_inline)
66# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
67# else
68# define VULKAN_HPP_INLINE inline
69# endif
70# elif defined(__GNUC__)
71# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
72# elif defined(_MSC_VER)
73# define VULKAN_HPP_INLINE __forceinline
74# else
75# define VULKAN_HPP_INLINE inline
76# endif
77#endif
78
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070079#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
80# define VULKAN_HPP_TYPESAFE_EXPLICIT
81#else
82# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
83#endif
84
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060085
86#if !defined(VULKAN_HPP_NAMESPACE)
87#define VULKAN_HPP_NAMESPACE vk
88#endif
89
90namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060091{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060092
Mark Lobodzinski2d589822016-12-12 09:44:34 -070093 template <typename FlagBitsType> struct FlagTraits
94 {
95 enum { allFlags = 0 };
96 };
97
Lenny Komowbed9b5c2016-08-11 11:23:15 -060098 template <typename BitType, typename MaskType = VkFlags>
99 class Flags
100 {
101 public:
102 Flags()
103 : m_mask(0)
104 {
105 }
106
107 Flags(BitType bit)
108 : m_mask(static_cast<MaskType>(bit))
109 {
110 }
111
112 Flags(Flags<BitType> const& rhs)
113 : m_mask(rhs.m_mask)
114 {
115 }
116
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700117 explicit Flags(MaskType flags)
118 : m_mask(flags)
119 {
120 }
121
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600122 Flags<BitType> & operator=(Flags<BitType> const& rhs)
123 {
124 m_mask = rhs.m_mask;
125 return *this;
126 }
127
128 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
129 {
130 m_mask |= rhs.m_mask;
131 return *this;
132 }
133
134 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
135 {
136 m_mask &= rhs.m_mask;
137 return *this;
138 }
139
140 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
141 {
142 m_mask ^= rhs.m_mask;
143 return *this;
144 }
145
146 Flags<BitType> operator|(Flags<BitType> const& rhs) const
147 {
148 Flags<BitType> result(*this);
149 result |= rhs;
150 return result;
151 }
152
153 Flags<BitType> operator&(Flags<BitType> const& rhs) const
154 {
155 Flags<BitType> result(*this);
156 result &= rhs;
157 return result;
158 }
159
160 Flags<BitType> operator^(Flags<BitType> const& rhs) const
161 {
162 Flags<BitType> result(*this);
163 result ^= rhs;
164 return result;
165 }
166
167 bool operator!() const
168 {
169 return !m_mask;
170 }
171
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700172 Flags<BitType> operator~() const
173 {
174 Flags<BitType> result(*this);
175 result.m_mask ^= FlagTraits<BitType>::allFlags;
176 return result;
177 }
178
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600179 bool operator==(Flags<BitType> const& rhs) const
180 {
181 return m_mask == rhs.m_mask;
182 }
183
184 bool operator!=(Flags<BitType> const& rhs) const
185 {
186 return m_mask != rhs.m_mask;
187 }
188
189 explicit operator bool() const
190 {
191 return !!m_mask;
192 }
193
194 explicit operator MaskType() const
195 {
196 return m_mask;
197 }
198
199 private:
200 MaskType m_mask;
201 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600202
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600203 template <typename BitType>
204 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
205 {
206 return flags | bit;
207 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600208
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600209 template <typename BitType>
210 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
211 {
212 return flags & bit;
213 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600214
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600215 template <typename BitType>
216 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
217 {
218 return flags ^ bit;
219 }
220
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700221
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600222 template <typename RefType>
223 class Optional
224 {
225 public:
226 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700227 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600228 Optional(std::nullptr_t) { m_ptr = nullptr; }
229
230 operator RefType*() const { return m_ptr; }
231 RefType const* operator->() const { return m_ptr; }
232 explicit operator bool() const { return !!m_ptr; }
233
234 private:
235 RefType *m_ptr;
236 };
237
238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
239 template <typename T>
240 class ArrayProxy
241 {
242 public:
243 ArrayProxy(std::nullptr_t)
244 : m_count(0)
245 , m_ptr(nullptr)
246 {}
247
248 ArrayProxy(T & ptr)
249 : m_count(1)
250 , m_ptr(&ptr)
251 {}
252
253 ArrayProxy(uint32_t count, T * ptr)
254 : m_count(count)
255 , m_ptr(ptr)
256 {}
257
258 template <size_t N>
259 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
260 : m_count(N)
261 , m_ptr(data.data())
262 {}
263
264 template <size_t N>
265 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
266 : m_count(N)
267 , m_ptr(data.data())
268 {}
269
270 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
271 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
272 : m_count(static_cast<uint32_t>(data.size()))
273 , m_ptr(data.data())
274 {}
275
276 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
277 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
278 : m_count(static_cast<uint32_t>(data.size()))
279 , m_ptr(data.data())
280 {}
281
282 ArrayProxy(std::initializer_list<T> const& data)
283 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
284 , m_ptr(data.begin())
285 {}
286
287 const T * begin() const
288 {
289 return m_ptr;
290 }
291
292 const T * end() const
293 {
294 return m_ptr + m_count;
295 }
296
297 const T & front() const
298 {
299 assert(m_count && m_ptr);
300 return *m_ptr;
301 }
302
303 const T & back() const
304 {
305 assert(m_count && m_ptr);
306 return *(m_ptr + m_count - 1);
307 }
308
309 bool empty() const
310 {
311 return (m_count == 0);
312 }
313
314 uint32_t size() const
315 {
316 return m_count;
317 }
318
319 T * data() const
320 {
321 return m_ptr;
322 }
323
324 private:
325 uint32_t m_count;
326 T * m_ptr;
327 };
328#endif
329
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700330#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700331
332 template <typename Type> class UniqueHandleTraits;
333
334 template <typename Type>
335 class UniqueHandle : public UniqueHandleTraits<Type>::deleter
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700336 {
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700337 private:
338 using Deleter = typename UniqueHandleTraits<Type>::deleter;
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700339 public:
340 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700341 : Deleter( deleter)
342 , m_value( value )
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700343 {}
344
345 UniqueHandle( UniqueHandle const& ) = delete;
346
347 UniqueHandle( UniqueHandle && other )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700348 : Deleter( std::move( static_cast<Deleter&>( other ) ) )
349 , m_value( other.release() )
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700350 {}
351
352 ~UniqueHandle()
353 {
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700354 this->destroy( m_value );
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700355 }
356
357 UniqueHandle & operator=( UniqueHandle const& ) = delete;
358
359 UniqueHandle & operator=( UniqueHandle && other )
360 {
361 reset( other.release() );
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700362 *static_cast<Deleter*>(this) = std::move( static_cast<Deleter&>(other) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700363 return *this;
364 }
365
366 explicit operator bool() const
367 {
368 return m_value.operator bool();
369 }
370
371 Type const* operator->() const
372 {
373 return &m_value;
374 }
375
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600376 Type * operator->()
377 {
378 return &m_value;
379 }
380
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700381 Type const& operator*() const
382 {
383 return m_value;
384 }
385
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600386 Type & operator*()
387 {
388 return m_value;
389 }
390
391 const Type & get() const
392 {
393 return m_value;
394 }
395
396 Type & get()
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700397 {
398 return m_value;
399 }
400
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700401 void reset( Type const& value = Type() )
402 {
403 if ( m_value != value )
404 {
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700405 this->destroy( m_value );
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700406 m_value = value;
407 }
408 }
409
410 Type release()
411 {
412 Type value = m_value;
413 m_value = nullptr;
414 return value;
415 }
416
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700417 void swap( UniqueHandle<Type> & rhs )
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700418 {
419 std::swap(m_value, rhs.m_value);
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700420 std::swap(static_cast<Deleter&>(*this), static_cast<Deleter&>(rhs));
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700421 }
422
423 private:
424 Type m_value;
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700425 };
426
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -0700427 template <typename Type>
428 VULKAN_HPP_INLINE void swap( UniqueHandle<Type> & lhs, UniqueHandle<Type> & rhs )
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700429 {
430 lhs.swap( rhs );
431 }
432#endif
433
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600434
Mark Lobodzinski417d5702017-11-27 12:00:45 -0700435 template <typename X, typename Y> struct isStructureChainValid { enum { value = false }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600436
437 template <class Element>
438 class StructureChainElement
439 {
440 public:
441 explicit operator Element&() { return value; }
442 explicit operator const Element&() const { return value; }
443 private:
444 Element value;
445 };
446
447 template<typename ...StructureElements>
448 class StructureChain : private StructureChainElement<StructureElements>...
449 {
450 public:
451 StructureChain()
452 {
453 link<StructureElements...>();
454 }
455
456 StructureChain(StructureChain const &rhs)
457 {
458 linkAndCopy<StructureElements...>(rhs);
459 }
460
461 StructureChain& operator=(StructureChain const &rhs)
462 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600463 linkAndCopy<StructureElements...>(rhs);
464 return *this;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600465 }
466
467 template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
468
469 private:
470 template<typename X>
471 void link()
472 {
473 }
474
475 template<typename X, typename Y, typename ...Z>
476 void link()
477 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -0700478 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600479 X& x = static_cast<X&>(*this);
480 Y& y = static_cast<Y&>(*this);
481 x.pNext = &y;
482 link<Y, Z...>();
483 }
484
485 template<typename X>
486 void linkAndCopy(StructureChain const &rhs)
487 {
488 static_cast<X&>(*this) = static_cast<X const &>(rhs);
489 }
490
491 template<typename X, typename Y, typename ...Z>
492 void linkAndCopy(StructureChain const &rhs)
493 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -0700494 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600495 X& x = static_cast<X&>(*this);
496 Y& y = static_cast<Y&>(*this);
497 x = static_cast<X const &>(rhs);
498 x.pNext = &y;
499 linkAndCopy<Y, Z...>(rhs);
500 }
501
502};
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600503 enum class Result
504 {
505 eSuccess = VK_SUCCESS,
506 eNotReady = VK_NOT_READY,
507 eTimeout = VK_TIMEOUT,
508 eEventSet = VK_EVENT_SET,
509 eEventReset = VK_EVENT_RESET,
510 eIncomplete = VK_INCOMPLETE,
511 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
512 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
513 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
514 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
515 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
516 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
517 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
518 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
519 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
520 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
521 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600522 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600523 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
524 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
525 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
526 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
527 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
528 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700529 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700530 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600531 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR,
532 eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600533 };
534
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700535 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600536 {
537 switch (value)
538 {
539 case Result::eSuccess: return "Success";
540 case Result::eNotReady: return "NotReady";
541 case Result::eTimeout: return "Timeout";
542 case Result::eEventSet: return "EventSet";
543 case Result::eEventReset: return "EventReset";
544 case Result::eIncomplete: return "Incomplete";
545 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
546 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
547 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
548 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
549 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
550 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
551 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
552 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
553 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
554 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
555 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600556 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600557 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
558 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
559 case Result::eSuboptimalKHR: return "SuboptimalKHR";
560 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
561 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
562 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
563 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700564 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600565 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600566 case Result::eErrorNotPermittedEXT: return "ErrorNotPermittedEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600567 default: return "invalid";
568 }
569 }
570
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600571#ifndef VULKAN_HPP_NO_EXCEPTIONS
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600572#if defined(_MSC_VER) && (_MSC_VER == 1800)
573# define noexcept _NOEXCEPT
574#endif
575
576 class ErrorCategoryImpl : public std::error_category
577 {
578 public:
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600579 virtual const char* name() const noexcept override { return "VULKAN_HPP_NAMESPACE::Result"; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600580 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
581 };
582
583#if defined(_MSC_VER) && (_MSC_VER == 1800)
584# undef noexcept
585#endif
586
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700587 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600588 {
589 static ErrorCategoryImpl instance;
590 return instance;
591 }
592
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700593 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600594 {
595 return std::error_code(static_cast<int>(e), errorCategory());
596 }
597
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700598 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600599 {
600 return std::error_condition(static_cast<int>(e), errorCategory());
601 }
602
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600603#if defined(_MSC_VER) && (_MSC_VER == 1800)
604# define noexcept _NOEXCEPT
605#endif
606
607 class Error
608 {
609 public:
610 virtual ~Error() = default;
611
612 virtual const char* what() const noexcept = 0;
613 };
614
615 class LogicError : public Error, public std::logic_error
616 {
617 public:
618 explicit LogicError( const std::string& what )
619 : Error(), std::logic_error(what) {}
620 explicit LogicError( char const * what )
621 : Error(), std::logic_error(what) {}
622 virtual ~LogicError() = default;
623
624 virtual const char* what() const noexcept { return std::logic_error::what(); }
625 };
626
627 class SystemError : public Error, public std::system_error
628 {
629 public:
630 SystemError( std::error_code ec )
631 : Error(), std::system_error(ec) {}
632 SystemError( std::error_code ec, std::string const& what )
633 : Error(), std::system_error(ec, what) {}
634 SystemError( std::error_code ec, char const * what )
635 : Error(), std::system_error(ec, what) {}
636 SystemError( int ev, std::error_category const& ecat )
637 : Error(), std::system_error(ev, ecat) {}
638 SystemError( int ev, std::error_category const& ecat, std::string const& what)
639 : Error(), std::system_error(ev, ecat, what) {}
640 SystemError( int ev, std::error_category const& ecat, char const * what)
641 : Error(), std::system_error(ev, ecat, what) {}
642 virtual ~SystemError() = default;
643
644 virtual const char* what() const noexcept { return std::system_error::what(); }
645 };
646
647#if defined(_MSC_VER) && (_MSC_VER == 1800)
648# undef noexcept
649#endif
650
651 class OutOfHostMemoryError : public SystemError
652 {
653 public:
654 OutOfHostMemoryError( std::string const& message )
655 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
656 OutOfHostMemoryError( char const * message )
657 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
658 };
659 class OutOfDeviceMemoryError : public SystemError
660 {
661 public:
662 OutOfDeviceMemoryError( std::string const& message )
663 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
664 OutOfDeviceMemoryError( char const * message )
665 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
666 };
667 class InitializationFailedError : public SystemError
668 {
669 public:
670 InitializationFailedError( std::string const& message )
671 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
672 InitializationFailedError( char const * message )
673 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
674 };
675 class DeviceLostError : public SystemError
676 {
677 public:
678 DeviceLostError( std::string const& message )
679 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
680 DeviceLostError( char const * message )
681 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
682 };
683 class MemoryMapFailedError : public SystemError
684 {
685 public:
686 MemoryMapFailedError( std::string const& message )
687 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
688 MemoryMapFailedError( char const * message )
689 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
690 };
691 class LayerNotPresentError : public SystemError
692 {
693 public:
694 LayerNotPresentError( std::string const& message )
695 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
696 LayerNotPresentError( char const * message )
697 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
698 };
699 class ExtensionNotPresentError : public SystemError
700 {
701 public:
702 ExtensionNotPresentError( std::string const& message )
703 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
704 ExtensionNotPresentError( char const * message )
705 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
706 };
707 class FeatureNotPresentError : public SystemError
708 {
709 public:
710 FeatureNotPresentError( std::string const& message )
711 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
712 FeatureNotPresentError( char const * message )
713 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
714 };
715 class IncompatibleDriverError : public SystemError
716 {
717 public:
718 IncompatibleDriverError( std::string const& message )
719 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
720 IncompatibleDriverError( char const * message )
721 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
722 };
723 class TooManyObjectsError : public SystemError
724 {
725 public:
726 TooManyObjectsError( std::string const& message )
727 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
728 TooManyObjectsError( char const * message )
729 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
730 };
731 class FormatNotSupportedError : public SystemError
732 {
733 public:
734 FormatNotSupportedError( std::string const& message )
735 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
736 FormatNotSupportedError( char const * message )
737 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
738 };
739 class FragmentedPoolError : public SystemError
740 {
741 public:
742 FragmentedPoolError( std::string const& message )
743 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
744 FragmentedPoolError( char const * message )
745 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
746 };
747 class SurfaceLostKHRError : public SystemError
748 {
749 public:
750 SurfaceLostKHRError( std::string const& message )
751 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
752 SurfaceLostKHRError( char const * message )
753 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
754 };
755 class NativeWindowInUseKHRError : public SystemError
756 {
757 public:
758 NativeWindowInUseKHRError( std::string const& message )
759 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
760 NativeWindowInUseKHRError( char const * message )
761 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
762 };
763 class OutOfDateKHRError : public SystemError
764 {
765 public:
766 OutOfDateKHRError( std::string const& message )
767 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
768 OutOfDateKHRError( char const * message )
769 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
770 };
771 class IncompatibleDisplayKHRError : public SystemError
772 {
773 public:
774 IncompatibleDisplayKHRError( std::string const& message )
775 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
776 IncompatibleDisplayKHRError( char const * message )
777 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
778 };
779 class ValidationFailedEXTError : public SystemError
780 {
781 public:
782 ValidationFailedEXTError( std::string const& message )
783 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
784 ValidationFailedEXTError( char const * message )
785 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
786 };
787 class InvalidShaderNVError : public SystemError
788 {
789 public:
790 InvalidShaderNVError( std::string const& message )
791 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
792 InvalidShaderNVError( char const * message )
793 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
794 };
795 class OutOfPoolMemoryKHRError : public SystemError
796 {
797 public:
798 OutOfPoolMemoryKHRError( std::string const& message )
799 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
800 OutOfPoolMemoryKHRError( char const * message )
801 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
802 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600803 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600804 {
805 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600806 InvalidExternalHandleKHRError( std::string const& message )
807 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
808 InvalidExternalHandleKHRError( char const * message )
809 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600810 };
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600811 class NotPermittedEXTError : public SystemError
812 {
813 public:
814 NotPermittedEXTError( std::string const& message )
815 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
816 NotPermittedEXTError( char const * message )
817 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
818 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600819
820 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
821 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600822 switch ( result )
823 {
824 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
825 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
826 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
827 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
828 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
829 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
830 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
831 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
832 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
833 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
834 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
835 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
836 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
837 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
838 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
839 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
840 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
841 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
842 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600843 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600844 case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600845 default: throw SystemError( make_error_code( result ) );
846 }
847 }
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600848#endif
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600849} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600850
851namespace std
852{
853 template <>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600854 struct is_error_code_enum<VULKAN_HPP_NAMESPACE::Result> : public true_type
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600855 {};
856}
857
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600858namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600859{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600860
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600861 template <typename T>
862 struct ResultValue
863 {
864 ResultValue( Result r, T & v )
865 : result( r )
866 , value( v )
867 {}
868
869 Result result;
870 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700871
872 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600873 };
874
875 template <typename T>
876 struct ResultValueType
877 {
878#ifdef VULKAN_HPP_NO_EXCEPTIONS
879 typedef ResultValue<T> type;
880#else
881 typedef T type;
882#endif
883 };
884
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600885 template <>
886 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600887 {
888#ifdef VULKAN_HPP_NO_EXCEPTIONS
889 typedef Result type;
890#else
891 typedef void type;
892#endif
893 };
894
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700895 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600896 {
897#ifdef VULKAN_HPP_NO_EXCEPTIONS
898 assert( result == Result::eSuccess );
899 return result;
900#else
901 if ( result != Result::eSuccess )
902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600903 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600904 }
905#endif
906 }
907
908 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700909 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600910 {
911#ifdef VULKAN_HPP_NO_EXCEPTIONS
912 assert( result == Result::eSuccess );
913 return ResultValue<T>( result, data );
914#else
915 if ( result != Result::eSuccess )
916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600917 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600918 }
919 return data;
920#endif
921 }
922
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700923 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600924 {
925#ifdef VULKAN_HPP_NO_EXCEPTIONS
926 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
927#else
928 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
929 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600930 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600931 }
932#endif
933 return result;
934 }
935
936 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700937 VULKAN_HPP_INLINE ResultValue<T> createResultValue( Result result, T & data, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600938 {
939#ifdef VULKAN_HPP_NO_EXCEPTIONS
940 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
941#else
942 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
943 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600944 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600945 }
946#endif
947 return ResultValue<T>( result, data );
948 }
949
950 using SampleMask = uint32_t;
951
952 using Bool32 = uint32_t;
953
954 using DeviceSize = uint64_t;
955
956 enum class FramebufferCreateFlagBits
957 {
958 };
959
960 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
961
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600962 enum class QueryPoolCreateFlagBits
963 {
964 };
965
966 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
967
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600968 enum class RenderPassCreateFlagBits
969 {
970 };
971
972 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
973
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600974 enum class SamplerCreateFlagBits
975 {
976 };
977
978 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
979
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600980 enum class PipelineLayoutCreateFlagBits
981 {
982 };
983
984 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
985
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600986 enum class PipelineCacheCreateFlagBits
987 {
988 };
989
990 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
991
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600992 enum class PipelineDepthStencilStateCreateFlagBits
993 {
994 };
995
996 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
997
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600998 enum class PipelineDynamicStateCreateFlagBits
999 {
1000 };
1001
1002 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
1003
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001004 enum class PipelineColorBlendStateCreateFlagBits
1005 {
1006 };
1007
1008 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
1009
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001010 enum class PipelineMultisampleStateCreateFlagBits
1011 {
1012 };
1013
1014 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
1015
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001016 enum class PipelineRasterizationStateCreateFlagBits
1017 {
1018 };
1019
1020 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
1021
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001022 enum class PipelineViewportStateCreateFlagBits
1023 {
1024 };
1025
1026 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
1027
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001028 enum class PipelineTessellationStateCreateFlagBits
1029 {
1030 };
1031
1032 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
1033
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001034 enum class PipelineInputAssemblyStateCreateFlagBits
1035 {
1036 };
1037
1038 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
1039
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001040 enum class PipelineVertexInputStateCreateFlagBits
1041 {
1042 };
1043
1044 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
1045
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001046 enum class PipelineShaderStageCreateFlagBits
1047 {
1048 };
1049
1050 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
1051
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001052 enum class BufferViewCreateFlagBits
1053 {
1054 };
1055
1056 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
1057
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001058 enum class InstanceCreateFlagBits
1059 {
1060 };
1061
1062 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
1063
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001064 enum class DeviceCreateFlagBits
1065 {
1066 };
1067
1068 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
1069
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001070 enum class DeviceQueueCreateFlagBits
1071 {
1072 };
1073
1074 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
1075
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001076 enum class ImageViewCreateFlagBits
1077 {
1078 };
1079
1080 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
1081
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001082 enum class SemaphoreCreateFlagBits
1083 {
1084 };
1085
1086 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1087
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001088 enum class ShaderModuleCreateFlagBits
1089 {
1090 };
1091
1092 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1093
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001094 enum class EventCreateFlagBits
1095 {
1096 };
1097
1098 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1099
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001100 enum class MemoryMapFlagBits
1101 {
1102 };
1103
1104 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1105
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001106 enum class DescriptorPoolResetFlagBits
1107 {
1108 };
1109
1110 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1111
Mark Young0f183a82017-02-28 09:58:04 -07001112 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001113 {
1114 };
1115
Mark Young0f183a82017-02-28 09:58:04 -07001116 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001117
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001118 enum class DisplayModeCreateFlagBitsKHR
1119 {
1120 };
1121
1122 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1123
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001124 enum class DisplaySurfaceCreateFlagBitsKHR
1125 {
1126 };
1127
1128 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1129
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001130#ifdef VK_USE_PLATFORM_ANDROID_KHR
1131 enum class AndroidSurfaceCreateFlagBitsKHR
1132 {
1133 };
1134#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1135
1136#ifdef VK_USE_PLATFORM_ANDROID_KHR
1137 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001138#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1139
1140#ifdef VK_USE_PLATFORM_MIR_KHR
1141 enum class MirSurfaceCreateFlagBitsKHR
1142 {
1143 };
1144#endif /*VK_USE_PLATFORM_MIR_KHR*/
1145
1146#ifdef VK_USE_PLATFORM_MIR_KHR
1147 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001148#endif /*VK_USE_PLATFORM_MIR_KHR*/
1149
Mark Young39389872017-01-19 21:10:49 -07001150#ifdef VK_USE_PLATFORM_VI_NN
1151 enum class ViSurfaceCreateFlagBitsNN
1152 {
1153 };
1154#endif /*VK_USE_PLATFORM_VI_NN*/
1155
1156#ifdef VK_USE_PLATFORM_VI_NN
1157 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001158#endif /*VK_USE_PLATFORM_VI_NN*/
1159
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001160#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1161 enum class WaylandSurfaceCreateFlagBitsKHR
1162 {
1163 };
1164#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1165
1166#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1167 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001168#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1169
1170#ifdef VK_USE_PLATFORM_WIN32_KHR
1171 enum class Win32SurfaceCreateFlagBitsKHR
1172 {
1173 };
1174#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1175
1176#ifdef VK_USE_PLATFORM_WIN32_KHR
1177 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001178#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1179
1180#ifdef VK_USE_PLATFORM_XLIB_KHR
1181 enum class XlibSurfaceCreateFlagBitsKHR
1182 {
1183 };
1184#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1185
1186#ifdef VK_USE_PLATFORM_XLIB_KHR
1187 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001188#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1189
1190#ifdef VK_USE_PLATFORM_XCB_KHR
1191 enum class XcbSurfaceCreateFlagBitsKHR
1192 {
1193 };
1194#endif /*VK_USE_PLATFORM_XCB_KHR*/
1195
1196#ifdef VK_USE_PLATFORM_XCB_KHR
1197 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001198#endif /*VK_USE_PLATFORM_XCB_KHR*/
1199
Mark Young0f183a82017-02-28 09:58:04 -07001200#ifdef VK_USE_PLATFORM_IOS_MVK
1201 enum class IOSSurfaceCreateFlagBitsMVK
1202 {
1203 };
1204#endif /*VK_USE_PLATFORM_IOS_MVK*/
1205
1206#ifdef VK_USE_PLATFORM_IOS_MVK
1207 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001208#endif /*VK_USE_PLATFORM_IOS_MVK*/
1209
1210#ifdef VK_USE_PLATFORM_MACOS_MVK
1211 enum class MacOSSurfaceCreateFlagBitsMVK
1212 {
1213 };
1214#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1215
1216#ifdef VK_USE_PLATFORM_MACOS_MVK
1217 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001218#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1219
Mark Young39389872017-01-19 21:10:49 -07001220 enum class CommandPoolTrimFlagBitsKHR
1221 {
1222 };
1223
1224 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1225
Mark Young0f183a82017-02-28 09:58:04 -07001226 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1227 {
1228 };
1229
1230 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1231
Mark Young0f183a82017-02-28 09:58:04 -07001232 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1233 {
1234 };
1235
1236 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1237
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001238 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1239 {
1240 };
1241
1242 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1243
1244 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1245 {
1246 };
1247
1248 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1249
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06001250 enum class ValidationCacheCreateFlagBitsEXT
1251 {
1252 };
1253
1254 using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
1255
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001256 enum class PipelineRasterizationConservativeStateCreateFlagBitsEXT
1257 {
1258 };
1259
1260 using PipelineRasterizationConservativeStateCreateFlagsEXT = Flags<PipelineRasterizationConservativeStateCreateFlagBitsEXT, VkPipelineRasterizationConservativeStateCreateFlagsEXT>;
1261
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001262 class DeviceMemory
1263 {
1264 public:
1265 DeviceMemory()
1266 : m_deviceMemory(VK_NULL_HANDLE)
1267 {}
1268
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001269 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001270 : m_deviceMemory(VK_NULL_HANDLE)
1271 {}
1272
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001273 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001274 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001275 {}
1276
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001277#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001278 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001279 {
1280 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001281 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001282 }
1283#endif
1284
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001285 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001286 {
1287 m_deviceMemory = VK_NULL_HANDLE;
1288 return *this;
1289 }
1290
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001291 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001292 {
1293 return m_deviceMemory == rhs.m_deviceMemory;
1294 }
1295
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001296 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001297 {
1298 return m_deviceMemory != rhs.m_deviceMemory;
1299 }
1300
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001301 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001302 {
1303 return m_deviceMemory < rhs.m_deviceMemory;
1304 }
1305
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001306
1307
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001308 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001309 {
1310 return m_deviceMemory;
1311 }
1312
1313 explicit operator bool() const
1314 {
1315 return m_deviceMemory != VK_NULL_HANDLE;
1316 }
1317
1318 bool operator!() const
1319 {
1320 return m_deviceMemory == VK_NULL_HANDLE;
1321 }
1322
1323 private:
1324 VkDeviceMemory m_deviceMemory;
1325 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001326
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001327 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1328
1329 class CommandPool
1330 {
1331 public:
1332 CommandPool()
1333 : m_commandPool(VK_NULL_HANDLE)
1334 {}
1335
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001336 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001337 : m_commandPool(VK_NULL_HANDLE)
1338 {}
1339
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001340 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001341 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001342 {}
1343
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001344#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001345 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001346 {
1347 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001348 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001349 }
1350#endif
1351
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001352 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001353 {
1354 m_commandPool = VK_NULL_HANDLE;
1355 return *this;
1356 }
1357
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001358 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001359 {
1360 return m_commandPool == rhs.m_commandPool;
1361 }
1362
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001363 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001364 {
1365 return m_commandPool != rhs.m_commandPool;
1366 }
1367
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001368 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001369 {
1370 return m_commandPool < rhs.m_commandPool;
1371 }
1372
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001373
1374
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001375 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001376 {
1377 return m_commandPool;
1378 }
1379
1380 explicit operator bool() const
1381 {
1382 return m_commandPool != VK_NULL_HANDLE;
1383 }
1384
1385 bool operator!() const
1386 {
1387 return m_commandPool == VK_NULL_HANDLE;
1388 }
1389
1390 private:
1391 VkCommandPool m_commandPool;
1392 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001393
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001394 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1395
1396 class Buffer
1397 {
1398 public:
1399 Buffer()
1400 : m_buffer(VK_NULL_HANDLE)
1401 {}
1402
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001403 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001404 : m_buffer(VK_NULL_HANDLE)
1405 {}
1406
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001407 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001408 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001409 {}
1410
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001411#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001412 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001413 {
1414 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001415 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001416 }
1417#endif
1418
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001419 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001420 {
1421 m_buffer = VK_NULL_HANDLE;
1422 return *this;
1423 }
1424
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001425 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001426 {
1427 return m_buffer == rhs.m_buffer;
1428 }
1429
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001430 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001431 {
1432 return m_buffer != rhs.m_buffer;
1433 }
1434
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001435 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001436 {
1437 return m_buffer < rhs.m_buffer;
1438 }
1439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001440
1441
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001442 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001443 {
1444 return m_buffer;
1445 }
1446
1447 explicit operator bool() const
1448 {
1449 return m_buffer != VK_NULL_HANDLE;
1450 }
1451
1452 bool operator!() const
1453 {
1454 return m_buffer == VK_NULL_HANDLE;
1455 }
1456
1457 private:
1458 VkBuffer m_buffer;
1459 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001460
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001461 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1462
1463 class BufferView
1464 {
1465 public:
1466 BufferView()
1467 : m_bufferView(VK_NULL_HANDLE)
1468 {}
1469
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001470 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001471 : m_bufferView(VK_NULL_HANDLE)
1472 {}
1473
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001474 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001475 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001476 {}
1477
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001478#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001479 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001480 {
1481 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001482 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001483 }
1484#endif
1485
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001486 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001487 {
1488 m_bufferView = VK_NULL_HANDLE;
1489 return *this;
1490 }
1491
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001492 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001493 {
1494 return m_bufferView == rhs.m_bufferView;
1495 }
1496
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001497 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001498 {
1499 return m_bufferView != rhs.m_bufferView;
1500 }
1501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001502 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001503 {
1504 return m_bufferView < rhs.m_bufferView;
1505 }
1506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001507
1508
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001509 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001510 {
1511 return m_bufferView;
1512 }
1513
1514 explicit operator bool() const
1515 {
1516 return m_bufferView != VK_NULL_HANDLE;
1517 }
1518
1519 bool operator!() const
1520 {
1521 return m_bufferView == VK_NULL_HANDLE;
1522 }
1523
1524 private:
1525 VkBufferView m_bufferView;
1526 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001527
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001528 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1529
1530 class Image
1531 {
1532 public:
1533 Image()
1534 : m_image(VK_NULL_HANDLE)
1535 {}
1536
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001537 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001538 : m_image(VK_NULL_HANDLE)
1539 {}
1540
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001541 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001542 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001543 {}
1544
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001545#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001546 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001547 {
1548 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001549 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001550 }
1551#endif
1552
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001553 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001554 {
1555 m_image = VK_NULL_HANDLE;
1556 return *this;
1557 }
1558
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001559 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001560 {
1561 return m_image == rhs.m_image;
1562 }
1563
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001564 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001565 {
1566 return m_image != rhs.m_image;
1567 }
1568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001569 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001570 {
1571 return m_image < rhs.m_image;
1572 }
1573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001574
1575
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001576 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001577 {
1578 return m_image;
1579 }
1580
1581 explicit operator bool() const
1582 {
1583 return m_image != VK_NULL_HANDLE;
1584 }
1585
1586 bool operator!() const
1587 {
1588 return m_image == VK_NULL_HANDLE;
1589 }
1590
1591 private:
1592 VkImage m_image;
1593 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001594
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001595 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1596
1597 class ImageView
1598 {
1599 public:
1600 ImageView()
1601 : m_imageView(VK_NULL_HANDLE)
1602 {}
1603
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001604 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001605 : m_imageView(VK_NULL_HANDLE)
1606 {}
1607
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001608 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001609 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001610 {}
1611
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001612#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001613 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001614 {
1615 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001616 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001617 }
1618#endif
1619
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001620 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001621 {
1622 m_imageView = VK_NULL_HANDLE;
1623 return *this;
1624 }
1625
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001626 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001627 {
1628 return m_imageView == rhs.m_imageView;
1629 }
1630
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001631 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001632 {
1633 return m_imageView != rhs.m_imageView;
1634 }
1635
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001636 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001637 {
1638 return m_imageView < rhs.m_imageView;
1639 }
1640
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001641
1642
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001643 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001644 {
1645 return m_imageView;
1646 }
1647
1648 explicit operator bool() const
1649 {
1650 return m_imageView != VK_NULL_HANDLE;
1651 }
1652
1653 bool operator!() const
1654 {
1655 return m_imageView == VK_NULL_HANDLE;
1656 }
1657
1658 private:
1659 VkImageView m_imageView;
1660 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001661
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001662 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1663
1664 class ShaderModule
1665 {
1666 public:
1667 ShaderModule()
1668 : m_shaderModule(VK_NULL_HANDLE)
1669 {}
1670
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001671 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001672 : m_shaderModule(VK_NULL_HANDLE)
1673 {}
1674
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001675 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001676 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001677 {}
1678
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001679#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001680 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001681 {
1682 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001683 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001684 }
1685#endif
1686
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001687 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001688 {
1689 m_shaderModule = VK_NULL_HANDLE;
1690 return *this;
1691 }
1692
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001693 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001694 {
1695 return m_shaderModule == rhs.m_shaderModule;
1696 }
1697
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001698 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001699 {
1700 return m_shaderModule != rhs.m_shaderModule;
1701 }
1702
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001703 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001704 {
1705 return m_shaderModule < rhs.m_shaderModule;
1706 }
1707
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001708
1709
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001710 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001711 {
1712 return m_shaderModule;
1713 }
1714
1715 explicit operator bool() const
1716 {
1717 return m_shaderModule != VK_NULL_HANDLE;
1718 }
1719
1720 bool operator!() const
1721 {
1722 return m_shaderModule == VK_NULL_HANDLE;
1723 }
1724
1725 private:
1726 VkShaderModule m_shaderModule;
1727 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001728
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001729 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1730
1731 class Pipeline
1732 {
1733 public:
1734 Pipeline()
1735 : m_pipeline(VK_NULL_HANDLE)
1736 {}
1737
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001738 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001739 : m_pipeline(VK_NULL_HANDLE)
1740 {}
1741
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001742 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001743 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001744 {}
1745
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001746#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001747 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001748 {
1749 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001750 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001751 }
1752#endif
1753
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001754 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001755 {
1756 m_pipeline = VK_NULL_HANDLE;
1757 return *this;
1758 }
1759
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001760 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001761 {
1762 return m_pipeline == rhs.m_pipeline;
1763 }
1764
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001765 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001766 {
1767 return m_pipeline != rhs.m_pipeline;
1768 }
1769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001770 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001771 {
1772 return m_pipeline < rhs.m_pipeline;
1773 }
1774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001775
1776
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001777 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001778 {
1779 return m_pipeline;
1780 }
1781
1782 explicit operator bool() const
1783 {
1784 return m_pipeline != VK_NULL_HANDLE;
1785 }
1786
1787 bool operator!() const
1788 {
1789 return m_pipeline == VK_NULL_HANDLE;
1790 }
1791
1792 private:
1793 VkPipeline m_pipeline;
1794 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001795
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001796 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1797
1798 class PipelineLayout
1799 {
1800 public:
1801 PipelineLayout()
1802 : m_pipelineLayout(VK_NULL_HANDLE)
1803 {}
1804
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001805 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001806 : m_pipelineLayout(VK_NULL_HANDLE)
1807 {}
1808
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001809 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001810 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001811 {}
1812
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001813#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001814 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001815 {
1816 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001817 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001818 }
1819#endif
1820
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001821 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001822 {
1823 m_pipelineLayout = VK_NULL_HANDLE;
1824 return *this;
1825 }
1826
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001827 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001828 {
1829 return m_pipelineLayout == rhs.m_pipelineLayout;
1830 }
1831
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001832 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001833 {
1834 return m_pipelineLayout != rhs.m_pipelineLayout;
1835 }
1836
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001837 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001838 {
1839 return m_pipelineLayout < rhs.m_pipelineLayout;
1840 }
1841
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001842
1843
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001844 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001845 {
1846 return m_pipelineLayout;
1847 }
1848
1849 explicit operator bool() const
1850 {
1851 return m_pipelineLayout != VK_NULL_HANDLE;
1852 }
1853
1854 bool operator!() const
1855 {
1856 return m_pipelineLayout == VK_NULL_HANDLE;
1857 }
1858
1859 private:
1860 VkPipelineLayout m_pipelineLayout;
1861 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001862
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001863 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1864
1865 class Sampler
1866 {
1867 public:
1868 Sampler()
1869 : m_sampler(VK_NULL_HANDLE)
1870 {}
1871
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001872 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001873 : m_sampler(VK_NULL_HANDLE)
1874 {}
1875
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001876 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001877 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001878 {}
1879
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001880#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001881 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001882 {
1883 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001884 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001885 }
1886#endif
1887
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001888 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001889 {
1890 m_sampler = VK_NULL_HANDLE;
1891 return *this;
1892 }
1893
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001894 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001895 {
1896 return m_sampler == rhs.m_sampler;
1897 }
1898
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001899 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001900 {
1901 return m_sampler != rhs.m_sampler;
1902 }
1903
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001904 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001905 {
1906 return m_sampler < rhs.m_sampler;
1907 }
1908
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001909
1910
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001911 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001912 {
1913 return m_sampler;
1914 }
1915
1916 explicit operator bool() const
1917 {
1918 return m_sampler != VK_NULL_HANDLE;
1919 }
1920
1921 bool operator!() const
1922 {
1923 return m_sampler == VK_NULL_HANDLE;
1924 }
1925
1926 private:
1927 VkSampler m_sampler;
1928 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001929
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001930 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1931
1932 class DescriptorSet
1933 {
1934 public:
1935 DescriptorSet()
1936 : m_descriptorSet(VK_NULL_HANDLE)
1937 {}
1938
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001939 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001940 : m_descriptorSet(VK_NULL_HANDLE)
1941 {}
1942
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001943 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07001944 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001945 {}
1946
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001947#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001948 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001949 {
1950 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001951 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001952 }
1953#endif
1954
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001955 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001956 {
1957 m_descriptorSet = VK_NULL_HANDLE;
1958 return *this;
1959 }
1960
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001961 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001962 {
1963 return m_descriptorSet == rhs.m_descriptorSet;
1964 }
1965
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001966 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001967 {
1968 return m_descriptorSet != rhs.m_descriptorSet;
1969 }
1970
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001971 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001972 {
1973 return m_descriptorSet < rhs.m_descriptorSet;
1974 }
1975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001976
1977
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001978 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001979 {
1980 return m_descriptorSet;
1981 }
1982
1983 explicit operator bool() const
1984 {
1985 return m_descriptorSet != VK_NULL_HANDLE;
1986 }
1987
1988 bool operator!() const
1989 {
1990 return m_descriptorSet == VK_NULL_HANDLE;
1991 }
1992
1993 private:
1994 VkDescriptorSet m_descriptorSet;
1995 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001996
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001997 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1998
1999 class DescriptorSetLayout
2000 {
2001 public:
2002 DescriptorSetLayout()
2003 : m_descriptorSetLayout(VK_NULL_HANDLE)
2004 {}
2005
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002006 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002007 : m_descriptorSetLayout(VK_NULL_HANDLE)
2008 {}
2009
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002010 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002011 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002012 {}
2013
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002014#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002015 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002016 {
2017 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002018 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002019 }
2020#endif
2021
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002022 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002023 {
2024 m_descriptorSetLayout = VK_NULL_HANDLE;
2025 return *this;
2026 }
2027
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002028 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002029 {
2030 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
2031 }
2032
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002033 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002034 {
2035 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
2036 }
2037
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002038 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002039 {
2040 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
2041 }
2042
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002043
2044
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002045 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002046 {
2047 return m_descriptorSetLayout;
2048 }
2049
2050 explicit operator bool() const
2051 {
2052 return m_descriptorSetLayout != VK_NULL_HANDLE;
2053 }
2054
2055 bool operator!() const
2056 {
2057 return m_descriptorSetLayout == VK_NULL_HANDLE;
2058 }
2059
2060 private:
2061 VkDescriptorSetLayout m_descriptorSetLayout;
2062 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002063
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002064 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
2065
2066 class DescriptorPool
2067 {
2068 public:
2069 DescriptorPool()
2070 : m_descriptorPool(VK_NULL_HANDLE)
2071 {}
2072
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002073 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002074 : m_descriptorPool(VK_NULL_HANDLE)
2075 {}
2076
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002077 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002078 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002079 {}
2080
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002081#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002082 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002083 {
2084 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002085 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002086 }
2087#endif
2088
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002089 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002090 {
2091 m_descriptorPool = VK_NULL_HANDLE;
2092 return *this;
2093 }
2094
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002095 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002096 {
2097 return m_descriptorPool == rhs.m_descriptorPool;
2098 }
2099
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002100 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002101 {
2102 return m_descriptorPool != rhs.m_descriptorPool;
2103 }
2104
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002105 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002106 {
2107 return m_descriptorPool < rhs.m_descriptorPool;
2108 }
2109
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002110
2111
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002112 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002113 {
2114 return m_descriptorPool;
2115 }
2116
2117 explicit operator bool() const
2118 {
2119 return m_descriptorPool != VK_NULL_HANDLE;
2120 }
2121
2122 bool operator!() const
2123 {
2124 return m_descriptorPool == VK_NULL_HANDLE;
2125 }
2126
2127 private:
2128 VkDescriptorPool m_descriptorPool;
2129 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002130
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002131 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2132
2133 class Fence
2134 {
2135 public:
2136 Fence()
2137 : m_fence(VK_NULL_HANDLE)
2138 {}
2139
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002140 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002141 : m_fence(VK_NULL_HANDLE)
2142 {}
2143
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002144 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002145 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002146 {}
2147
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002148#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002149 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002150 {
2151 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002152 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002153 }
2154#endif
2155
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002156 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002157 {
2158 m_fence = VK_NULL_HANDLE;
2159 return *this;
2160 }
2161
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002162 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002163 {
2164 return m_fence == rhs.m_fence;
2165 }
2166
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002167 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002168 {
2169 return m_fence != rhs.m_fence;
2170 }
2171
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002172 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002173 {
2174 return m_fence < rhs.m_fence;
2175 }
2176
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002177
2178
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002179 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002180 {
2181 return m_fence;
2182 }
2183
2184 explicit operator bool() const
2185 {
2186 return m_fence != VK_NULL_HANDLE;
2187 }
2188
2189 bool operator!() const
2190 {
2191 return m_fence == VK_NULL_HANDLE;
2192 }
2193
2194 private:
2195 VkFence m_fence;
2196 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002197
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002198 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2199
2200 class Semaphore
2201 {
2202 public:
2203 Semaphore()
2204 : m_semaphore(VK_NULL_HANDLE)
2205 {}
2206
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002207 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002208 : m_semaphore(VK_NULL_HANDLE)
2209 {}
2210
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002211 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002212 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002213 {}
2214
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002215#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002216 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002217 {
2218 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002219 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002220 }
2221#endif
2222
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002223 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002224 {
2225 m_semaphore = VK_NULL_HANDLE;
2226 return *this;
2227 }
2228
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002229 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002230 {
2231 return m_semaphore == rhs.m_semaphore;
2232 }
2233
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002234 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002235 {
2236 return m_semaphore != rhs.m_semaphore;
2237 }
2238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002239 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002240 {
2241 return m_semaphore < rhs.m_semaphore;
2242 }
2243
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002244
2245
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002246 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002247 {
2248 return m_semaphore;
2249 }
2250
2251 explicit operator bool() const
2252 {
2253 return m_semaphore != VK_NULL_HANDLE;
2254 }
2255
2256 bool operator!() const
2257 {
2258 return m_semaphore == VK_NULL_HANDLE;
2259 }
2260
2261 private:
2262 VkSemaphore m_semaphore;
2263 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002264
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002265 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2266
2267 class Event
2268 {
2269 public:
2270 Event()
2271 : m_event(VK_NULL_HANDLE)
2272 {}
2273
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002274 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002275 : m_event(VK_NULL_HANDLE)
2276 {}
2277
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002278 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002279 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002280 {}
2281
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002282#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002283 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002284 {
2285 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002286 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002287 }
2288#endif
2289
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002290 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002291 {
2292 m_event = VK_NULL_HANDLE;
2293 return *this;
2294 }
2295
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002296 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002297 {
2298 return m_event == rhs.m_event;
2299 }
2300
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002301 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002302 {
2303 return m_event != rhs.m_event;
2304 }
2305
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002306 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002307 {
2308 return m_event < rhs.m_event;
2309 }
2310
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002311
2312
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002313 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002314 {
2315 return m_event;
2316 }
2317
2318 explicit operator bool() const
2319 {
2320 return m_event != VK_NULL_HANDLE;
2321 }
2322
2323 bool operator!() const
2324 {
2325 return m_event == VK_NULL_HANDLE;
2326 }
2327
2328 private:
2329 VkEvent m_event;
2330 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002331
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002332 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2333
2334 class QueryPool
2335 {
2336 public:
2337 QueryPool()
2338 : m_queryPool(VK_NULL_HANDLE)
2339 {}
2340
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002341 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002342 : m_queryPool(VK_NULL_HANDLE)
2343 {}
2344
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002345 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002346 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002347 {}
2348
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002349#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002350 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002351 {
2352 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002353 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002354 }
2355#endif
2356
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002357 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002358 {
2359 m_queryPool = VK_NULL_HANDLE;
2360 return *this;
2361 }
2362
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002363 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002364 {
2365 return m_queryPool == rhs.m_queryPool;
2366 }
2367
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002368 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002369 {
2370 return m_queryPool != rhs.m_queryPool;
2371 }
2372
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002373 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002374 {
2375 return m_queryPool < rhs.m_queryPool;
2376 }
2377
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002378
2379
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002380 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002381 {
2382 return m_queryPool;
2383 }
2384
2385 explicit operator bool() const
2386 {
2387 return m_queryPool != VK_NULL_HANDLE;
2388 }
2389
2390 bool operator!() const
2391 {
2392 return m_queryPool == VK_NULL_HANDLE;
2393 }
2394
2395 private:
2396 VkQueryPool m_queryPool;
2397 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002398
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002399 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2400
2401 class Framebuffer
2402 {
2403 public:
2404 Framebuffer()
2405 : m_framebuffer(VK_NULL_HANDLE)
2406 {}
2407
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002408 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002409 : m_framebuffer(VK_NULL_HANDLE)
2410 {}
2411
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002412 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002413 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002414 {}
2415
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002416#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002417 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002418 {
2419 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002420 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002421 }
2422#endif
2423
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002424 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002425 {
2426 m_framebuffer = VK_NULL_HANDLE;
2427 return *this;
2428 }
2429
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002430 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002431 {
2432 return m_framebuffer == rhs.m_framebuffer;
2433 }
2434
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002435 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002436 {
2437 return m_framebuffer != rhs.m_framebuffer;
2438 }
2439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002440 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002441 {
2442 return m_framebuffer < rhs.m_framebuffer;
2443 }
2444
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002445
2446
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002447 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002448 {
2449 return m_framebuffer;
2450 }
2451
2452 explicit operator bool() const
2453 {
2454 return m_framebuffer != VK_NULL_HANDLE;
2455 }
2456
2457 bool operator!() const
2458 {
2459 return m_framebuffer == VK_NULL_HANDLE;
2460 }
2461
2462 private:
2463 VkFramebuffer m_framebuffer;
2464 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002465
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002466 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2467
2468 class RenderPass
2469 {
2470 public:
2471 RenderPass()
2472 : m_renderPass(VK_NULL_HANDLE)
2473 {}
2474
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002475 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002476 : m_renderPass(VK_NULL_HANDLE)
2477 {}
2478
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002479 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002480 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002481 {}
2482
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002483#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002484 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002485 {
2486 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002487 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002488 }
2489#endif
2490
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002491 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002492 {
2493 m_renderPass = VK_NULL_HANDLE;
2494 return *this;
2495 }
2496
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002497 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002498 {
2499 return m_renderPass == rhs.m_renderPass;
2500 }
2501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002502 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002503 {
2504 return m_renderPass != rhs.m_renderPass;
2505 }
2506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002507 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002508 {
2509 return m_renderPass < rhs.m_renderPass;
2510 }
2511
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002512
2513
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002514 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002515 {
2516 return m_renderPass;
2517 }
2518
2519 explicit operator bool() const
2520 {
2521 return m_renderPass != VK_NULL_HANDLE;
2522 }
2523
2524 bool operator!() const
2525 {
2526 return m_renderPass == VK_NULL_HANDLE;
2527 }
2528
2529 private:
2530 VkRenderPass m_renderPass;
2531 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002532
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002533 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2534
2535 class PipelineCache
2536 {
2537 public:
2538 PipelineCache()
2539 : m_pipelineCache(VK_NULL_HANDLE)
2540 {}
2541
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002542 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002543 : m_pipelineCache(VK_NULL_HANDLE)
2544 {}
2545
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002546 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002547 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002548 {}
2549
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002550#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002551 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002552 {
2553 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002554 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002555 }
2556#endif
2557
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002558 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002559 {
2560 m_pipelineCache = VK_NULL_HANDLE;
2561 return *this;
2562 }
2563
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002564 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002565 {
2566 return m_pipelineCache == rhs.m_pipelineCache;
2567 }
2568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002569 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002570 {
2571 return m_pipelineCache != rhs.m_pipelineCache;
2572 }
2573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002574 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002575 {
2576 return m_pipelineCache < rhs.m_pipelineCache;
2577 }
2578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002579
2580
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002581 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002582 {
2583 return m_pipelineCache;
2584 }
2585
2586 explicit operator bool() const
2587 {
2588 return m_pipelineCache != VK_NULL_HANDLE;
2589 }
2590
2591 bool operator!() const
2592 {
2593 return m_pipelineCache == VK_NULL_HANDLE;
2594 }
2595
2596 private:
2597 VkPipelineCache m_pipelineCache;
2598 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002599
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002600 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2601
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002602 class ObjectTableNVX
2603 {
2604 public:
2605 ObjectTableNVX()
2606 : m_objectTableNVX(VK_NULL_HANDLE)
2607 {}
2608
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002609 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002610 : m_objectTableNVX(VK_NULL_HANDLE)
2611 {}
2612
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002613 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002614 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002615 {}
2616
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002617#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002618 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002619 {
2620 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002621 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002622 }
2623#endif
2624
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002625 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002626 {
2627 m_objectTableNVX = VK_NULL_HANDLE;
2628 return *this;
2629 }
2630
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002631 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002632 {
2633 return m_objectTableNVX == rhs.m_objectTableNVX;
2634 }
2635
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002636 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002637 {
2638 return m_objectTableNVX != rhs.m_objectTableNVX;
2639 }
2640
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002641 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002642 {
2643 return m_objectTableNVX < rhs.m_objectTableNVX;
2644 }
2645
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002646
2647
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002648 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002649 {
2650 return m_objectTableNVX;
2651 }
2652
2653 explicit operator bool() const
2654 {
2655 return m_objectTableNVX != VK_NULL_HANDLE;
2656 }
2657
2658 bool operator!() const
2659 {
2660 return m_objectTableNVX == VK_NULL_HANDLE;
2661 }
2662
2663 private:
2664 VkObjectTableNVX m_objectTableNVX;
2665 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002666
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002667 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2668
2669 class IndirectCommandsLayoutNVX
2670 {
2671 public:
2672 IndirectCommandsLayoutNVX()
2673 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2674 {}
2675
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002676 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002677 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2678 {}
2679
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002680 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002681 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002682 {}
2683
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002684#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002685 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002686 {
2687 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002688 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002689 }
2690#endif
2691
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002692 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002693 {
2694 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2695 return *this;
2696 }
2697
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002698 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002699 {
2700 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2701 }
2702
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002703 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002704 {
2705 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2706 }
2707
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002708 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002709 {
2710 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2711 }
2712
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002713
2714
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002715 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002716 {
2717 return m_indirectCommandsLayoutNVX;
2718 }
2719
2720 explicit operator bool() const
2721 {
2722 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2723 }
2724
2725 bool operator!() const
2726 {
2727 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2728 }
2729
2730 private:
2731 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2732 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002733
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002734 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2735
Mark Young0f183a82017-02-28 09:58:04 -07002736 class DescriptorUpdateTemplateKHR
2737 {
2738 public:
2739 DescriptorUpdateTemplateKHR()
2740 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2741 {}
2742
2743 DescriptorUpdateTemplateKHR( std::nullptr_t )
2744 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2745 {}
2746
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002747 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002748 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002749 {}
2750
2751#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002752 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002753 {
2754 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002755 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002756 }
2757#endif
2758
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002759 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002760 {
2761 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2762 return *this;
2763 }
2764
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002765 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002766 {
2767 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2768 }
2769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002770 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002771 {
2772 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2773 }
2774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002775 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002776 {
2777 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2778 }
2779
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002780
2781
Mark Young0f183a82017-02-28 09:58:04 -07002782 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2783 {
2784 return m_descriptorUpdateTemplateKHR;
2785 }
2786
2787 explicit operator bool() const
2788 {
2789 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2790 }
2791
2792 bool operator!() const
2793 {
2794 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2795 }
2796
2797 private:
2798 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2799 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002800
Mark Young0f183a82017-02-28 09:58:04 -07002801 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2802
Lenny Komowb79f04a2017-09-18 17:07:00 -06002803 class SamplerYcbcrConversionKHR
2804 {
2805 public:
2806 SamplerYcbcrConversionKHR()
2807 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2808 {}
2809
2810 SamplerYcbcrConversionKHR( std::nullptr_t )
2811 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2812 {}
2813
2814 VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversionKHR( VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002815 : m_samplerYcbcrConversionKHR( samplerYcbcrConversionKHR )
Lenny Komowb79f04a2017-09-18 17:07:00 -06002816 {}
2817
2818#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2819 SamplerYcbcrConversionKHR & operator=(VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR)
2820 {
2821 m_samplerYcbcrConversionKHR = samplerYcbcrConversionKHR;
2822 return *this;
2823 }
2824#endif
2825
2826 SamplerYcbcrConversionKHR & operator=( std::nullptr_t )
2827 {
2828 m_samplerYcbcrConversionKHR = VK_NULL_HANDLE;
2829 return *this;
2830 }
2831
2832 bool operator==( SamplerYcbcrConversionKHR const & rhs ) const
2833 {
2834 return m_samplerYcbcrConversionKHR == rhs.m_samplerYcbcrConversionKHR;
2835 }
2836
2837 bool operator!=(SamplerYcbcrConversionKHR const & rhs ) const
2838 {
2839 return m_samplerYcbcrConversionKHR != rhs.m_samplerYcbcrConversionKHR;
2840 }
2841
2842 bool operator<(SamplerYcbcrConversionKHR const & rhs ) const
2843 {
2844 return m_samplerYcbcrConversionKHR < rhs.m_samplerYcbcrConversionKHR;
2845 }
2846
2847
2848
2849 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversionKHR() const
2850 {
2851 return m_samplerYcbcrConversionKHR;
2852 }
2853
2854 explicit operator bool() const
2855 {
2856 return m_samplerYcbcrConversionKHR != VK_NULL_HANDLE;
2857 }
2858
2859 bool operator!() const
2860 {
2861 return m_samplerYcbcrConversionKHR == VK_NULL_HANDLE;
2862 }
2863
2864 private:
2865 VkSamplerYcbcrConversionKHR m_samplerYcbcrConversionKHR;
2866 };
2867
2868 static_assert( sizeof( SamplerYcbcrConversionKHR ) == sizeof( VkSamplerYcbcrConversionKHR ), "handle and wrapper have different size!" );
2869
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002870 class ValidationCacheEXT
2871 {
2872 public:
2873 ValidationCacheEXT()
2874 : m_validationCacheEXT(VK_NULL_HANDLE)
2875 {}
2876
2877 ValidationCacheEXT( std::nullptr_t )
2878 : m_validationCacheEXT(VK_NULL_HANDLE)
2879 {}
2880
2881 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002882 : m_validationCacheEXT( validationCacheEXT )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002883 {}
2884
2885#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2886 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
2887 {
2888 m_validationCacheEXT = validationCacheEXT;
2889 return *this;
2890 }
2891#endif
2892
2893 ValidationCacheEXT & operator=( std::nullptr_t )
2894 {
2895 m_validationCacheEXT = VK_NULL_HANDLE;
2896 return *this;
2897 }
2898
2899 bool operator==( ValidationCacheEXT const & rhs ) const
2900 {
2901 return m_validationCacheEXT == rhs.m_validationCacheEXT;
2902 }
2903
2904 bool operator!=(ValidationCacheEXT const & rhs ) const
2905 {
2906 return m_validationCacheEXT != rhs.m_validationCacheEXT;
2907 }
2908
2909 bool operator<(ValidationCacheEXT const & rhs ) const
2910 {
2911 return m_validationCacheEXT < rhs.m_validationCacheEXT;
2912 }
2913
2914
2915
2916 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
2917 {
2918 return m_validationCacheEXT;
2919 }
2920
2921 explicit operator bool() const
2922 {
2923 return m_validationCacheEXT != VK_NULL_HANDLE;
2924 }
2925
2926 bool operator!() const
2927 {
2928 return m_validationCacheEXT == VK_NULL_HANDLE;
2929 }
2930
2931 private:
2932 VkValidationCacheEXT m_validationCacheEXT;
2933 };
2934
2935 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
2936
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002937 class DisplayKHR
2938 {
2939 public:
2940 DisplayKHR()
2941 : m_displayKHR(VK_NULL_HANDLE)
2942 {}
2943
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002944 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002945 : m_displayKHR(VK_NULL_HANDLE)
2946 {}
2947
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002948 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07002949 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002950 {}
2951
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002952#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002953 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002954 {
2955 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002956 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002957 }
2958#endif
2959
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002960 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002961 {
2962 m_displayKHR = VK_NULL_HANDLE;
2963 return *this;
2964 }
2965
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002966 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002967 {
2968 return m_displayKHR == rhs.m_displayKHR;
2969 }
2970
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002971 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002972 {
2973 return m_displayKHR != rhs.m_displayKHR;
2974 }
2975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002976 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002977 {
2978 return m_displayKHR < rhs.m_displayKHR;
2979 }
2980
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002981
2982
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002983 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002984 {
2985 return m_displayKHR;
2986 }
2987
2988 explicit operator bool() const
2989 {
2990 return m_displayKHR != VK_NULL_HANDLE;
2991 }
2992
2993 bool operator!() const
2994 {
2995 return m_displayKHR == VK_NULL_HANDLE;
2996 }
2997
2998 private:
2999 VkDisplayKHR m_displayKHR;
3000 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003001
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003002 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
3003
3004 class DisplayModeKHR
3005 {
3006 public:
3007 DisplayModeKHR()
3008 : m_displayModeKHR(VK_NULL_HANDLE)
3009 {}
3010
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003011 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003012 : m_displayModeKHR(VK_NULL_HANDLE)
3013 {}
3014
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003015 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07003016 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003017 {}
3018
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003019#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003020 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003021 {
3022 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003023 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003024 }
3025#endif
3026
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003027 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003028 {
3029 m_displayModeKHR = VK_NULL_HANDLE;
3030 return *this;
3031 }
3032
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003033 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003034 {
3035 return m_displayModeKHR == rhs.m_displayModeKHR;
3036 }
3037
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003038 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003039 {
3040 return m_displayModeKHR != rhs.m_displayModeKHR;
3041 }
3042
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003043 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003044 {
3045 return m_displayModeKHR < rhs.m_displayModeKHR;
3046 }
3047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003048
3049
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003050 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003051 {
3052 return m_displayModeKHR;
3053 }
3054
3055 explicit operator bool() const
3056 {
3057 return m_displayModeKHR != VK_NULL_HANDLE;
3058 }
3059
3060 bool operator!() const
3061 {
3062 return m_displayModeKHR == VK_NULL_HANDLE;
3063 }
3064
3065 private:
3066 VkDisplayModeKHR m_displayModeKHR;
3067 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003069 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
3070
3071 class SurfaceKHR
3072 {
3073 public:
3074 SurfaceKHR()
3075 : m_surfaceKHR(VK_NULL_HANDLE)
3076 {}
3077
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003078 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003079 : m_surfaceKHR(VK_NULL_HANDLE)
3080 {}
3081
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003082 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07003083 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003084 {}
3085
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003086#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003087 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003088 {
3089 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003090 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003091 }
3092#endif
3093
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003094 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003095 {
3096 m_surfaceKHR = VK_NULL_HANDLE;
3097 return *this;
3098 }
3099
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003100 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003101 {
3102 return m_surfaceKHR == rhs.m_surfaceKHR;
3103 }
3104
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003105 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003106 {
3107 return m_surfaceKHR != rhs.m_surfaceKHR;
3108 }
3109
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003110 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003111 {
3112 return m_surfaceKHR < rhs.m_surfaceKHR;
3113 }
3114
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003115
3116
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003117 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003118 {
3119 return m_surfaceKHR;
3120 }
3121
3122 explicit operator bool() const
3123 {
3124 return m_surfaceKHR != VK_NULL_HANDLE;
3125 }
3126
3127 bool operator!() const
3128 {
3129 return m_surfaceKHR == VK_NULL_HANDLE;
3130 }
3131
3132 private:
3133 VkSurfaceKHR m_surfaceKHR;
3134 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003135
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003136 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
3137
3138 class SwapchainKHR
3139 {
3140 public:
3141 SwapchainKHR()
3142 : m_swapchainKHR(VK_NULL_HANDLE)
3143 {}
3144
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003145 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003146 : m_swapchainKHR(VK_NULL_HANDLE)
3147 {}
3148
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003149 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07003150 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003151 {}
3152
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003153#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003154 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003155 {
3156 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003157 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003158 }
3159#endif
3160
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003161 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003162 {
3163 m_swapchainKHR = VK_NULL_HANDLE;
3164 return *this;
3165 }
3166
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003167 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003168 {
3169 return m_swapchainKHR == rhs.m_swapchainKHR;
3170 }
3171
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003172 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003173 {
3174 return m_swapchainKHR != rhs.m_swapchainKHR;
3175 }
3176
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003177 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003178 {
3179 return m_swapchainKHR < rhs.m_swapchainKHR;
3180 }
3181
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003182
3183
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003184 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003185 {
3186 return m_swapchainKHR;
3187 }
3188
3189 explicit operator bool() const
3190 {
3191 return m_swapchainKHR != VK_NULL_HANDLE;
3192 }
3193
3194 bool operator!() const
3195 {
3196 return m_swapchainKHR == VK_NULL_HANDLE;
3197 }
3198
3199 private:
3200 VkSwapchainKHR m_swapchainKHR;
3201 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003202
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003203 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
3204
3205 class DebugReportCallbackEXT
3206 {
3207 public:
3208 DebugReportCallbackEXT()
3209 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3210 {}
3211
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003212 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003213 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3214 {}
3215
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003216 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07003217 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003218 {}
3219
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003220#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003221 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003222 {
3223 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003224 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003225 }
3226#endif
3227
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003228 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003229 {
3230 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3231 return *this;
3232 }
3233
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003234 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003235 {
3236 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3237 }
3238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003239 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003240 {
3241 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3242 }
3243
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003244 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003245 {
3246 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3247 }
3248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003249
3250
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003251 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003252 {
3253 return m_debugReportCallbackEXT;
3254 }
3255
3256 explicit operator bool() const
3257 {
3258 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3259 }
3260
3261 bool operator!() const
3262 {
3263 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3264 }
3265
3266 private:
3267 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3268 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003269
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003270 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3271
3272 struct Offset2D
3273 {
3274 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3275 : x( x_ )
3276 , y( y_ )
3277 {
3278 }
3279
3280 Offset2D( VkOffset2D const & rhs )
3281 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003282 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003283 }
3284
3285 Offset2D& operator=( VkOffset2D const & rhs )
3286 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003287 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003288 return *this;
3289 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003290 Offset2D& setX( int32_t x_ )
3291 {
3292 x = x_;
3293 return *this;
3294 }
3295
3296 Offset2D& setY( int32_t y_ )
3297 {
3298 y = y_;
3299 return *this;
3300 }
3301
3302 operator const VkOffset2D&() const
3303 {
3304 return *reinterpret_cast<const VkOffset2D*>(this);
3305 }
3306
3307 bool operator==( Offset2D const& rhs ) const
3308 {
3309 return ( x == rhs.x )
3310 && ( y == rhs.y );
3311 }
3312
3313 bool operator!=( Offset2D const& rhs ) const
3314 {
3315 return !operator==( rhs );
3316 }
3317
3318 int32_t x;
3319 int32_t y;
3320 };
3321 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3322
3323 struct Offset3D
3324 {
3325 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3326 : x( x_ )
3327 , y( y_ )
3328 , z( z_ )
3329 {
3330 }
3331
3332 Offset3D( VkOffset3D const & rhs )
3333 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003334 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003335 }
3336
3337 Offset3D& operator=( VkOffset3D const & rhs )
3338 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003339 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003340 return *this;
3341 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003342 Offset3D& setX( int32_t x_ )
3343 {
3344 x = x_;
3345 return *this;
3346 }
3347
3348 Offset3D& setY( int32_t y_ )
3349 {
3350 y = y_;
3351 return *this;
3352 }
3353
3354 Offset3D& setZ( int32_t z_ )
3355 {
3356 z = z_;
3357 return *this;
3358 }
3359
3360 operator const VkOffset3D&() const
3361 {
3362 return *reinterpret_cast<const VkOffset3D*>(this);
3363 }
3364
3365 bool operator==( Offset3D const& rhs ) const
3366 {
3367 return ( x == rhs.x )
3368 && ( y == rhs.y )
3369 && ( z == rhs.z );
3370 }
3371
3372 bool operator!=( Offset3D const& rhs ) const
3373 {
3374 return !operator==( rhs );
3375 }
3376
3377 int32_t x;
3378 int32_t y;
3379 int32_t z;
3380 };
3381 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3382
3383 struct Extent2D
3384 {
3385 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3386 : width( width_ )
3387 , height( height_ )
3388 {
3389 }
3390
3391 Extent2D( VkExtent2D const & rhs )
3392 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003393 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003394 }
3395
3396 Extent2D& operator=( VkExtent2D const & rhs )
3397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003398 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003399 return *this;
3400 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003401 Extent2D& setWidth( uint32_t width_ )
3402 {
3403 width = width_;
3404 return *this;
3405 }
3406
3407 Extent2D& setHeight( uint32_t height_ )
3408 {
3409 height = height_;
3410 return *this;
3411 }
3412
3413 operator const VkExtent2D&() const
3414 {
3415 return *reinterpret_cast<const VkExtent2D*>(this);
3416 }
3417
3418 bool operator==( Extent2D const& rhs ) const
3419 {
3420 return ( width == rhs.width )
3421 && ( height == rhs.height );
3422 }
3423
3424 bool operator!=( Extent2D const& rhs ) const
3425 {
3426 return !operator==( rhs );
3427 }
3428
3429 uint32_t width;
3430 uint32_t height;
3431 };
3432 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3433
3434 struct Extent3D
3435 {
3436 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3437 : width( width_ )
3438 , height( height_ )
3439 , depth( depth_ )
3440 {
3441 }
3442
3443 Extent3D( VkExtent3D const & rhs )
3444 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003445 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003446 }
3447
3448 Extent3D& operator=( VkExtent3D const & rhs )
3449 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003450 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003451 return *this;
3452 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003453 Extent3D& setWidth( uint32_t width_ )
3454 {
3455 width = width_;
3456 return *this;
3457 }
3458
3459 Extent3D& setHeight( uint32_t height_ )
3460 {
3461 height = height_;
3462 return *this;
3463 }
3464
3465 Extent3D& setDepth( uint32_t depth_ )
3466 {
3467 depth = depth_;
3468 return *this;
3469 }
3470
3471 operator const VkExtent3D&() const
3472 {
3473 return *reinterpret_cast<const VkExtent3D*>(this);
3474 }
3475
3476 bool operator==( Extent3D const& rhs ) const
3477 {
3478 return ( width == rhs.width )
3479 && ( height == rhs.height )
3480 && ( depth == rhs.depth );
3481 }
3482
3483 bool operator!=( Extent3D const& rhs ) const
3484 {
3485 return !operator==( rhs );
3486 }
3487
3488 uint32_t width;
3489 uint32_t height;
3490 uint32_t depth;
3491 };
3492 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3493
3494 struct Viewport
3495 {
3496 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3497 : x( x_ )
3498 , y( y_ )
3499 , width( width_ )
3500 , height( height_ )
3501 , minDepth( minDepth_ )
3502 , maxDepth( maxDepth_ )
3503 {
3504 }
3505
3506 Viewport( VkViewport const & rhs )
3507 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003508 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003509 }
3510
3511 Viewport& operator=( VkViewport const & rhs )
3512 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003513 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003514 return *this;
3515 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003516 Viewport& setX( float x_ )
3517 {
3518 x = x_;
3519 return *this;
3520 }
3521
3522 Viewport& setY( float y_ )
3523 {
3524 y = y_;
3525 return *this;
3526 }
3527
3528 Viewport& setWidth( float width_ )
3529 {
3530 width = width_;
3531 return *this;
3532 }
3533
3534 Viewport& setHeight( float height_ )
3535 {
3536 height = height_;
3537 return *this;
3538 }
3539
3540 Viewport& setMinDepth( float minDepth_ )
3541 {
3542 minDepth = minDepth_;
3543 return *this;
3544 }
3545
3546 Viewport& setMaxDepth( float maxDepth_ )
3547 {
3548 maxDepth = maxDepth_;
3549 return *this;
3550 }
3551
3552 operator const VkViewport&() const
3553 {
3554 return *reinterpret_cast<const VkViewport*>(this);
3555 }
3556
3557 bool operator==( Viewport const& rhs ) const
3558 {
3559 return ( x == rhs.x )
3560 && ( y == rhs.y )
3561 && ( width == rhs.width )
3562 && ( height == rhs.height )
3563 && ( minDepth == rhs.minDepth )
3564 && ( maxDepth == rhs.maxDepth );
3565 }
3566
3567 bool operator!=( Viewport const& rhs ) const
3568 {
3569 return !operator==( rhs );
3570 }
3571
3572 float x;
3573 float y;
3574 float width;
3575 float height;
3576 float minDepth;
3577 float maxDepth;
3578 };
3579 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3580
3581 struct Rect2D
3582 {
3583 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3584 : offset( offset_ )
3585 , extent( extent_ )
3586 {
3587 }
3588
3589 Rect2D( VkRect2D const & rhs )
3590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003591 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003592 }
3593
3594 Rect2D& operator=( VkRect2D const & rhs )
3595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003596 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003597 return *this;
3598 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003599 Rect2D& setOffset( Offset2D offset_ )
3600 {
3601 offset = offset_;
3602 return *this;
3603 }
3604
3605 Rect2D& setExtent( Extent2D extent_ )
3606 {
3607 extent = extent_;
3608 return *this;
3609 }
3610
3611 operator const VkRect2D&() const
3612 {
3613 return *reinterpret_cast<const VkRect2D*>(this);
3614 }
3615
3616 bool operator==( Rect2D const& rhs ) const
3617 {
3618 return ( offset == rhs.offset )
3619 && ( extent == rhs.extent );
3620 }
3621
3622 bool operator!=( Rect2D const& rhs ) const
3623 {
3624 return !operator==( rhs );
3625 }
3626
3627 Offset2D offset;
3628 Extent2D extent;
3629 };
3630 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3631
3632 struct ClearRect
3633 {
3634 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3635 : rect( rect_ )
3636 , baseArrayLayer( baseArrayLayer_ )
3637 , layerCount( layerCount_ )
3638 {
3639 }
3640
3641 ClearRect( VkClearRect const & rhs )
3642 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003643 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003644 }
3645
3646 ClearRect& operator=( VkClearRect const & rhs )
3647 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003648 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003649 return *this;
3650 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003651 ClearRect& setRect( Rect2D rect_ )
3652 {
3653 rect = rect_;
3654 return *this;
3655 }
3656
3657 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3658 {
3659 baseArrayLayer = baseArrayLayer_;
3660 return *this;
3661 }
3662
3663 ClearRect& setLayerCount( uint32_t layerCount_ )
3664 {
3665 layerCount = layerCount_;
3666 return *this;
3667 }
3668
3669 operator const VkClearRect&() const
3670 {
3671 return *reinterpret_cast<const VkClearRect*>(this);
3672 }
3673
3674 bool operator==( ClearRect const& rhs ) const
3675 {
3676 return ( rect == rhs.rect )
3677 && ( baseArrayLayer == rhs.baseArrayLayer )
3678 && ( layerCount == rhs.layerCount );
3679 }
3680
3681 bool operator!=( ClearRect const& rhs ) const
3682 {
3683 return !operator==( rhs );
3684 }
3685
3686 Rect2D rect;
3687 uint32_t baseArrayLayer;
3688 uint32_t layerCount;
3689 };
3690 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3691
3692 struct ExtensionProperties
3693 {
3694 operator const VkExtensionProperties&() const
3695 {
3696 return *reinterpret_cast<const VkExtensionProperties*>(this);
3697 }
3698
3699 bool operator==( ExtensionProperties const& rhs ) const
3700 {
3701 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3702 && ( specVersion == rhs.specVersion );
3703 }
3704
3705 bool operator!=( ExtensionProperties const& rhs ) const
3706 {
3707 return !operator==( rhs );
3708 }
3709
3710 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3711 uint32_t specVersion;
3712 };
3713 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3714
3715 struct LayerProperties
3716 {
3717 operator const VkLayerProperties&() const
3718 {
3719 return *reinterpret_cast<const VkLayerProperties*>(this);
3720 }
3721
3722 bool operator==( LayerProperties const& rhs ) const
3723 {
3724 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3725 && ( specVersion == rhs.specVersion )
3726 && ( implementationVersion == rhs.implementationVersion )
3727 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3728 }
3729
3730 bool operator!=( LayerProperties const& rhs ) const
3731 {
3732 return !operator==( rhs );
3733 }
3734
3735 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3736 uint32_t specVersion;
3737 uint32_t implementationVersion;
3738 char description[VK_MAX_DESCRIPTION_SIZE];
3739 };
3740 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3741
3742 struct AllocationCallbacks
3743 {
3744 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3745 : pUserData( pUserData_ )
3746 , pfnAllocation( pfnAllocation_ )
3747 , pfnReallocation( pfnReallocation_ )
3748 , pfnFree( pfnFree_ )
3749 , pfnInternalAllocation( pfnInternalAllocation_ )
3750 , pfnInternalFree( pfnInternalFree_ )
3751 {
3752 }
3753
3754 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3755 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003756 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003757 }
3758
3759 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003761 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003762 return *this;
3763 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003764 AllocationCallbacks& setPUserData( void* pUserData_ )
3765 {
3766 pUserData = pUserData_;
3767 return *this;
3768 }
3769
3770 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3771 {
3772 pfnAllocation = pfnAllocation_;
3773 return *this;
3774 }
3775
3776 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3777 {
3778 pfnReallocation = pfnReallocation_;
3779 return *this;
3780 }
3781
3782 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3783 {
3784 pfnFree = pfnFree_;
3785 return *this;
3786 }
3787
3788 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3789 {
3790 pfnInternalAllocation = pfnInternalAllocation_;
3791 return *this;
3792 }
3793
3794 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3795 {
3796 pfnInternalFree = pfnInternalFree_;
3797 return *this;
3798 }
3799
3800 operator const VkAllocationCallbacks&() const
3801 {
3802 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3803 }
3804
3805 bool operator==( AllocationCallbacks const& rhs ) const
3806 {
3807 return ( pUserData == rhs.pUserData )
3808 && ( pfnAllocation == rhs.pfnAllocation )
3809 && ( pfnReallocation == rhs.pfnReallocation )
3810 && ( pfnFree == rhs.pfnFree )
3811 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3812 && ( pfnInternalFree == rhs.pfnInternalFree );
3813 }
3814
3815 bool operator!=( AllocationCallbacks const& rhs ) const
3816 {
3817 return !operator==( rhs );
3818 }
3819
3820 void* pUserData;
3821 PFN_vkAllocationFunction pfnAllocation;
3822 PFN_vkReallocationFunction pfnReallocation;
3823 PFN_vkFreeFunction pfnFree;
3824 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3825 PFN_vkInternalFreeNotification pfnInternalFree;
3826 };
3827 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3828
3829 struct MemoryRequirements
3830 {
3831 operator const VkMemoryRequirements&() const
3832 {
3833 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3834 }
3835
3836 bool operator==( MemoryRequirements const& rhs ) const
3837 {
3838 return ( size == rhs.size )
3839 && ( alignment == rhs.alignment )
3840 && ( memoryTypeBits == rhs.memoryTypeBits );
3841 }
3842
3843 bool operator!=( MemoryRequirements const& rhs ) const
3844 {
3845 return !operator==( rhs );
3846 }
3847
3848 DeviceSize size;
3849 DeviceSize alignment;
3850 uint32_t memoryTypeBits;
3851 };
3852 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3853
3854 struct DescriptorBufferInfo
3855 {
3856 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3857 : buffer( buffer_ )
3858 , offset( offset_ )
3859 , range( range_ )
3860 {
3861 }
3862
3863 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003865 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003866 }
3867
3868 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003870 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003871 return *this;
3872 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003873 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3874 {
3875 buffer = buffer_;
3876 return *this;
3877 }
3878
3879 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3880 {
3881 offset = offset_;
3882 return *this;
3883 }
3884
3885 DescriptorBufferInfo& setRange( DeviceSize range_ )
3886 {
3887 range = range_;
3888 return *this;
3889 }
3890
3891 operator const VkDescriptorBufferInfo&() const
3892 {
3893 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3894 }
3895
3896 bool operator==( DescriptorBufferInfo const& rhs ) const
3897 {
3898 return ( buffer == rhs.buffer )
3899 && ( offset == rhs.offset )
3900 && ( range == rhs.range );
3901 }
3902
3903 bool operator!=( DescriptorBufferInfo const& rhs ) const
3904 {
3905 return !operator==( rhs );
3906 }
3907
3908 Buffer buffer;
3909 DeviceSize offset;
3910 DeviceSize range;
3911 };
3912 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3913
3914 struct SubresourceLayout
3915 {
3916 operator const VkSubresourceLayout&() const
3917 {
3918 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3919 }
3920
3921 bool operator==( SubresourceLayout const& rhs ) const
3922 {
3923 return ( offset == rhs.offset )
3924 && ( size == rhs.size )
3925 && ( rowPitch == rhs.rowPitch )
3926 && ( arrayPitch == rhs.arrayPitch )
3927 && ( depthPitch == rhs.depthPitch );
3928 }
3929
3930 bool operator!=( SubresourceLayout const& rhs ) const
3931 {
3932 return !operator==( rhs );
3933 }
3934
3935 DeviceSize offset;
3936 DeviceSize size;
3937 DeviceSize rowPitch;
3938 DeviceSize arrayPitch;
3939 DeviceSize depthPitch;
3940 };
3941 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3942
3943 struct BufferCopy
3944 {
3945 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3946 : srcOffset( srcOffset_ )
3947 , dstOffset( dstOffset_ )
3948 , size( size_ )
3949 {
3950 }
3951
3952 BufferCopy( VkBufferCopy const & rhs )
3953 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003954 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003955 }
3956
3957 BufferCopy& operator=( VkBufferCopy const & rhs )
3958 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003959 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003960 return *this;
3961 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003962 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3963 {
3964 srcOffset = srcOffset_;
3965 return *this;
3966 }
3967
3968 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3969 {
3970 dstOffset = dstOffset_;
3971 return *this;
3972 }
3973
3974 BufferCopy& setSize( DeviceSize size_ )
3975 {
3976 size = size_;
3977 return *this;
3978 }
3979
3980 operator const VkBufferCopy&() const
3981 {
3982 return *reinterpret_cast<const VkBufferCopy*>(this);
3983 }
3984
3985 bool operator==( BufferCopy const& rhs ) const
3986 {
3987 return ( srcOffset == rhs.srcOffset )
3988 && ( dstOffset == rhs.dstOffset )
3989 && ( size == rhs.size );
3990 }
3991
3992 bool operator!=( BufferCopy const& rhs ) const
3993 {
3994 return !operator==( rhs );
3995 }
3996
3997 DeviceSize srcOffset;
3998 DeviceSize dstOffset;
3999 DeviceSize size;
4000 };
4001 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
4002
4003 struct SpecializationMapEntry
4004 {
4005 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
4006 : constantID( constantID_ )
4007 , offset( offset_ )
4008 , size( size_ )
4009 {
4010 }
4011
4012 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
4013 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004014 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004015 }
4016
4017 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
4018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004019 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004020 return *this;
4021 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004022 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
4023 {
4024 constantID = constantID_;
4025 return *this;
4026 }
4027
4028 SpecializationMapEntry& setOffset( uint32_t offset_ )
4029 {
4030 offset = offset_;
4031 return *this;
4032 }
4033
4034 SpecializationMapEntry& setSize( size_t size_ )
4035 {
4036 size = size_;
4037 return *this;
4038 }
4039
4040 operator const VkSpecializationMapEntry&() const
4041 {
4042 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
4043 }
4044
4045 bool operator==( SpecializationMapEntry const& rhs ) const
4046 {
4047 return ( constantID == rhs.constantID )
4048 && ( offset == rhs.offset )
4049 && ( size == rhs.size );
4050 }
4051
4052 bool operator!=( SpecializationMapEntry const& rhs ) const
4053 {
4054 return !operator==( rhs );
4055 }
4056
4057 uint32_t constantID;
4058 uint32_t offset;
4059 size_t size;
4060 };
4061 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
4062
4063 struct SpecializationInfo
4064 {
4065 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
4066 : mapEntryCount( mapEntryCount_ )
4067 , pMapEntries( pMapEntries_ )
4068 , dataSize( dataSize_ )
4069 , pData( pData_ )
4070 {
4071 }
4072
4073 SpecializationInfo( VkSpecializationInfo const & rhs )
4074 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004075 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004076 }
4077
4078 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
4079 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004080 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004081 return *this;
4082 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004083 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
4084 {
4085 mapEntryCount = mapEntryCount_;
4086 return *this;
4087 }
4088
4089 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
4090 {
4091 pMapEntries = pMapEntries_;
4092 return *this;
4093 }
4094
4095 SpecializationInfo& setDataSize( size_t dataSize_ )
4096 {
4097 dataSize = dataSize_;
4098 return *this;
4099 }
4100
4101 SpecializationInfo& setPData( const void* pData_ )
4102 {
4103 pData = pData_;
4104 return *this;
4105 }
4106
4107 operator const VkSpecializationInfo&() const
4108 {
4109 return *reinterpret_cast<const VkSpecializationInfo*>(this);
4110 }
4111
4112 bool operator==( SpecializationInfo const& rhs ) const
4113 {
4114 return ( mapEntryCount == rhs.mapEntryCount )
4115 && ( pMapEntries == rhs.pMapEntries )
4116 && ( dataSize == rhs.dataSize )
4117 && ( pData == rhs.pData );
4118 }
4119
4120 bool operator!=( SpecializationInfo const& rhs ) const
4121 {
4122 return !operator==( rhs );
4123 }
4124
4125 uint32_t mapEntryCount;
4126 const SpecializationMapEntry* pMapEntries;
4127 size_t dataSize;
4128 const void* pData;
4129 };
4130 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
4131
4132 union ClearColorValue
4133 {
4134 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
4135 {
4136 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4137 }
4138
4139 ClearColorValue( const std::array<int32_t,4>& int32_ )
4140 {
4141 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4142 }
4143
4144 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
4145 {
4146 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4147 }
4148
4149 ClearColorValue& setFloat32( std::array<float,4> float32_ )
4150 {
4151 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4152 return *this;
4153 }
4154
4155 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
4156 {
4157 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4158 return *this;
4159 }
4160
4161 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
4162 {
4163 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4164 return *this;
4165 }
4166
4167 operator VkClearColorValue const& () const
4168 {
4169 return *reinterpret_cast<const VkClearColorValue*>(this);
4170 }
4171
4172 float float32[4];
4173 int32_t int32[4];
4174 uint32_t uint32[4];
4175 };
4176
4177 struct ClearDepthStencilValue
4178 {
4179 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
4180 : depth( depth_ )
4181 , stencil( stencil_ )
4182 {
4183 }
4184
4185 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
4186 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004187 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004188 }
4189
4190 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
4191 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004192 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004193 return *this;
4194 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004195 ClearDepthStencilValue& setDepth( float depth_ )
4196 {
4197 depth = depth_;
4198 return *this;
4199 }
4200
4201 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
4202 {
4203 stencil = stencil_;
4204 return *this;
4205 }
4206
4207 operator const VkClearDepthStencilValue&() const
4208 {
4209 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
4210 }
4211
4212 bool operator==( ClearDepthStencilValue const& rhs ) const
4213 {
4214 return ( depth == rhs.depth )
4215 && ( stencil == rhs.stencil );
4216 }
4217
4218 bool operator!=( ClearDepthStencilValue const& rhs ) const
4219 {
4220 return !operator==( rhs );
4221 }
4222
4223 float depth;
4224 uint32_t stencil;
4225 };
4226 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
4227
4228 union ClearValue
4229 {
4230 ClearValue( ClearColorValue color_ = ClearColorValue() )
4231 {
4232 color = color_;
4233 }
4234
4235 ClearValue( ClearDepthStencilValue depthStencil_ )
4236 {
4237 depthStencil = depthStencil_;
4238 }
4239
4240 ClearValue& setColor( ClearColorValue color_ )
4241 {
4242 color = color_;
4243 return *this;
4244 }
4245
4246 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4247 {
4248 depthStencil = depthStencil_;
4249 return *this;
4250 }
4251
4252 operator VkClearValue const& () const
4253 {
4254 return *reinterpret_cast<const VkClearValue*>(this);
4255 }
4256
4257#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4258 ClearColorValue color;
4259 ClearDepthStencilValue depthStencil;
4260#else
4261 VkClearColorValue color;
4262 VkClearDepthStencilValue depthStencil;
4263#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4264 };
4265
4266 struct PhysicalDeviceFeatures
4267 {
4268 PhysicalDeviceFeatures( Bool32 robustBufferAccess_ = 0, Bool32 fullDrawIndexUint32_ = 0, Bool32 imageCubeArray_ = 0, Bool32 independentBlend_ = 0, Bool32 geometryShader_ = 0, Bool32 tessellationShader_ = 0, Bool32 sampleRateShading_ = 0, Bool32 dualSrcBlend_ = 0, Bool32 logicOp_ = 0, Bool32 multiDrawIndirect_ = 0, Bool32 drawIndirectFirstInstance_ = 0, Bool32 depthClamp_ = 0, Bool32 depthBiasClamp_ = 0, Bool32 fillModeNonSolid_ = 0, Bool32 depthBounds_ = 0, Bool32 wideLines_ = 0, Bool32 largePoints_ = 0, Bool32 alphaToOne_ = 0, Bool32 multiViewport_ = 0, Bool32 samplerAnisotropy_ = 0, Bool32 textureCompressionETC2_ = 0, Bool32 textureCompressionASTC_LDR_ = 0, Bool32 textureCompressionBC_ = 0, Bool32 occlusionQueryPrecise_ = 0, Bool32 pipelineStatisticsQuery_ = 0, Bool32 vertexPipelineStoresAndAtomics_ = 0, Bool32 fragmentStoresAndAtomics_ = 0, Bool32 shaderTessellationAndGeometryPointSize_ = 0, Bool32 shaderImageGatherExtended_ = 0, Bool32 shaderStorageImageExtendedFormats_ = 0, Bool32 shaderStorageImageMultisample_ = 0, Bool32 shaderStorageImageReadWithoutFormat_ = 0, Bool32 shaderStorageImageWriteWithoutFormat_ = 0, Bool32 shaderUniformBufferArrayDynamicIndexing_ = 0, Bool32 shaderSampledImageArrayDynamicIndexing_ = 0, Bool32 shaderStorageBufferArrayDynamicIndexing_ = 0, Bool32 shaderStorageImageArrayDynamicIndexing_ = 0, Bool32 shaderClipDistance_ = 0, Bool32 shaderCullDistance_ = 0, Bool32 shaderFloat64_ = 0, Bool32 shaderInt64_ = 0, Bool32 shaderInt16_ = 0, Bool32 shaderResourceResidency_ = 0, Bool32 shaderResourceMinLod_ = 0, Bool32 sparseBinding_ = 0, Bool32 sparseResidencyBuffer_ = 0, Bool32 sparseResidencyImage2D_ = 0, Bool32 sparseResidencyImage3D_ = 0, Bool32 sparseResidency2Samples_ = 0, Bool32 sparseResidency4Samples_ = 0, Bool32 sparseResidency8Samples_ = 0, Bool32 sparseResidency16Samples_ = 0, Bool32 sparseResidencyAliased_ = 0, Bool32 variableMultisampleRate_ = 0, Bool32 inheritedQueries_ = 0 )
4269 : robustBufferAccess( robustBufferAccess_ )
4270 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4271 , imageCubeArray( imageCubeArray_ )
4272 , independentBlend( independentBlend_ )
4273 , geometryShader( geometryShader_ )
4274 , tessellationShader( tessellationShader_ )
4275 , sampleRateShading( sampleRateShading_ )
4276 , dualSrcBlend( dualSrcBlend_ )
4277 , logicOp( logicOp_ )
4278 , multiDrawIndirect( multiDrawIndirect_ )
4279 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4280 , depthClamp( depthClamp_ )
4281 , depthBiasClamp( depthBiasClamp_ )
4282 , fillModeNonSolid( fillModeNonSolid_ )
4283 , depthBounds( depthBounds_ )
4284 , wideLines( wideLines_ )
4285 , largePoints( largePoints_ )
4286 , alphaToOne( alphaToOne_ )
4287 , multiViewport( multiViewport_ )
4288 , samplerAnisotropy( samplerAnisotropy_ )
4289 , textureCompressionETC2( textureCompressionETC2_ )
4290 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4291 , textureCompressionBC( textureCompressionBC_ )
4292 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4293 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4294 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4295 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4296 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4297 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4298 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4299 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4300 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4301 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4302 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4303 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4304 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4305 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4306 , shaderClipDistance( shaderClipDistance_ )
4307 , shaderCullDistance( shaderCullDistance_ )
4308 , shaderFloat64( shaderFloat64_ )
4309 , shaderInt64( shaderInt64_ )
4310 , shaderInt16( shaderInt16_ )
4311 , shaderResourceResidency( shaderResourceResidency_ )
4312 , shaderResourceMinLod( shaderResourceMinLod_ )
4313 , sparseBinding( sparseBinding_ )
4314 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4315 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4316 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4317 , sparseResidency2Samples( sparseResidency2Samples_ )
4318 , sparseResidency4Samples( sparseResidency4Samples_ )
4319 , sparseResidency8Samples( sparseResidency8Samples_ )
4320 , sparseResidency16Samples( sparseResidency16Samples_ )
4321 , sparseResidencyAliased( sparseResidencyAliased_ )
4322 , variableMultisampleRate( variableMultisampleRate_ )
4323 , inheritedQueries( inheritedQueries_ )
4324 {
4325 }
4326
4327 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4328 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004329 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004330 }
4331
4332 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4333 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004334 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004335 return *this;
4336 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004337 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4338 {
4339 robustBufferAccess = robustBufferAccess_;
4340 return *this;
4341 }
4342
4343 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4344 {
4345 fullDrawIndexUint32 = fullDrawIndexUint32_;
4346 return *this;
4347 }
4348
4349 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4350 {
4351 imageCubeArray = imageCubeArray_;
4352 return *this;
4353 }
4354
4355 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4356 {
4357 independentBlend = independentBlend_;
4358 return *this;
4359 }
4360
4361 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4362 {
4363 geometryShader = geometryShader_;
4364 return *this;
4365 }
4366
4367 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4368 {
4369 tessellationShader = tessellationShader_;
4370 return *this;
4371 }
4372
4373 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4374 {
4375 sampleRateShading = sampleRateShading_;
4376 return *this;
4377 }
4378
4379 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4380 {
4381 dualSrcBlend = dualSrcBlend_;
4382 return *this;
4383 }
4384
4385 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4386 {
4387 logicOp = logicOp_;
4388 return *this;
4389 }
4390
4391 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4392 {
4393 multiDrawIndirect = multiDrawIndirect_;
4394 return *this;
4395 }
4396
4397 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4398 {
4399 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4400 return *this;
4401 }
4402
4403 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4404 {
4405 depthClamp = depthClamp_;
4406 return *this;
4407 }
4408
4409 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4410 {
4411 depthBiasClamp = depthBiasClamp_;
4412 return *this;
4413 }
4414
4415 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4416 {
4417 fillModeNonSolid = fillModeNonSolid_;
4418 return *this;
4419 }
4420
4421 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4422 {
4423 depthBounds = depthBounds_;
4424 return *this;
4425 }
4426
4427 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4428 {
4429 wideLines = wideLines_;
4430 return *this;
4431 }
4432
4433 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4434 {
4435 largePoints = largePoints_;
4436 return *this;
4437 }
4438
4439 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4440 {
4441 alphaToOne = alphaToOne_;
4442 return *this;
4443 }
4444
4445 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4446 {
4447 multiViewport = multiViewport_;
4448 return *this;
4449 }
4450
4451 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4452 {
4453 samplerAnisotropy = samplerAnisotropy_;
4454 return *this;
4455 }
4456
4457 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4458 {
4459 textureCompressionETC2 = textureCompressionETC2_;
4460 return *this;
4461 }
4462
4463 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4464 {
4465 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4466 return *this;
4467 }
4468
4469 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4470 {
4471 textureCompressionBC = textureCompressionBC_;
4472 return *this;
4473 }
4474
4475 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4476 {
4477 occlusionQueryPrecise = occlusionQueryPrecise_;
4478 return *this;
4479 }
4480
4481 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4482 {
4483 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4484 return *this;
4485 }
4486
4487 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4488 {
4489 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4490 return *this;
4491 }
4492
4493 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4494 {
4495 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4496 return *this;
4497 }
4498
4499 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4500 {
4501 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4502 return *this;
4503 }
4504
4505 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4506 {
4507 shaderImageGatherExtended = shaderImageGatherExtended_;
4508 return *this;
4509 }
4510
4511 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4512 {
4513 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4514 return *this;
4515 }
4516
4517 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4518 {
4519 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4520 return *this;
4521 }
4522
4523 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4524 {
4525 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4526 return *this;
4527 }
4528
4529 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4530 {
4531 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4532 return *this;
4533 }
4534
4535 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4536 {
4537 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4538 return *this;
4539 }
4540
4541 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4542 {
4543 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4544 return *this;
4545 }
4546
4547 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4548 {
4549 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4550 return *this;
4551 }
4552
4553 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4554 {
4555 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4556 return *this;
4557 }
4558
4559 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4560 {
4561 shaderClipDistance = shaderClipDistance_;
4562 return *this;
4563 }
4564
4565 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4566 {
4567 shaderCullDistance = shaderCullDistance_;
4568 return *this;
4569 }
4570
4571 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4572 {
4573 shaderFloat64 = shaderFloat64_;
4574 return *this;
4575 }
4576
4577 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4578 {
4579 shaderInt64 = shaderInt64_;
4580 return *this;
4581 }
4582
4583 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4584 {
4585 shaderInt16 = shaderInt16_;
4586 return *this;
4587 }
4588
4589 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4590 {
4591 shaderResourceResidency = shaderResourceResidency_;
4592 return *this;
4593 }
4594
4595 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4596 {
4597 shaderResourceMinLod = shaderResourceMinLod_;
4598 return *this;
4599 }
4600
4601 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4602 {
4603 sparseBinding = sparseBinding_;
4604 return *this;
4605 }
4606
4607 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4608 {
4609 sparseResidencyBuffer = sparseResidencyBuffer_;
4610 return *this;
4611 }
4612
4613 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4614 {
4615 sparseResidencyImage2D = sparseResidencyImage2D_;
4616 return *this;
4617 }
4618
4619 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4620 {
4621 sparseResidencyImage3D = sparseResidencyImage3D_;
4622 return *this;
4623 }
4624
4625 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4626 {
4627 sparseResidency2Samples = sparseResidency2Samples_;
4628 return *this;
4629 }
4630
4631 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4632 {
4633 sparseResidency4Samples = sparseResidency4Samples_;
4634 return *this;
4635 }
4636
4637 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4638 {
4639 sparseResidency8Samples = sparseResidency8Samples_;
4640 return *this;
4641 }
4642
4643 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4644 {
4645 sparseResidency16Samples = sparseResidency16Samples_;
4646 return *this;
4647 }
4648
4649 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4650 {
4651 sparseResidencyAliased = sparseResidencyAliased_;
4652 return *this;
4653 }
4654
4655 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4656 {
4657 variableMultisampleRate = variableMultisampleRate_;
4658 return *this;
4659 }
4660
4661 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4662 {
4663 inheritedQueries = inheritedQueries_;
4664 return *this;
4665 }
4666
4667 operator const VkPhysicalDeviceFeatures&() const
4668 {
4669 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4670 }
4671
4672 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4673 {
4674 return ( robustBufferAccess == rhs.robustBufferAccess )
4675 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4676 && ( imageCubeArray == rhs.imageCubeArray )
4677 && ( independentBlend == rhs.independentBlend )
4678 && ( geometryShader == rhs.geometryShader )
4679 && ( tessellationShader == rhs.tessellationShader )
4680 && ( sampleRateShading == rhs.sampleRateShading )
4681 && ( dualSrcBlend == rhs.dualSrcBlend )
4682 && ( logicOp == rhs.logicOp )
4683 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4684 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4685 && ( depthClamp == rhs.depthClamp )
4686 && ( depthBiasClamp == rhs.depthBiasClamp )
4687 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4688 && ( depthBounds == rhs.depthBounds )
4689 && ( wideLines == rhs.wideLines )
4690 && ( largePoints == rhs.largePoints )
4691 && ( alphaToOne == rhs.alphaToOne )
4692 && ( multiViewport == rhs.multiViewport )
4693 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4694 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4695 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4696 && ( textureCompressionBC == rhs.textureCompressionBC )
4697 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4698 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4699 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4700 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4701 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4702 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4703 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4704 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4705 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4706 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4707 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4708 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4709 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4710 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4711 && ( shaderClipDistance == rhs.shaderClipDistance )
4712 && ( shaderCullDistance == rhs.shaderCullDistance )
4713 && ( shaderFloat64 == rhs.shaderFloat64 )
4714 && ( shaderInt64 == rhs.shaderInt64 )
4715 && ( shaderInt16 == rhs.shaderInt16 )
4716 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4717 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4718 && ( sparseBinding == rhs.sparseBinding )
4719 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4720 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4721 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4722 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4723 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4724 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4725 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4726 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4727 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4728 && ( inheritedQueries == rhs.inheritedQueries );
4729 }
4730
4731 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4732 {
4733 return !operator==( rhs );
4734 }
4735
4736 Bool32 robustBufferAccess;
4737 Bool32 fullDrawIndexUint32;
4738 Bool32 imageCubeArray;
4739 Bool32 independentBlend;
4740 Bool32 geometryShader;
4741 Bool32 tessellationShader;
4742 Bool32 sampleRateShading;
4743 Bool32 dualSrcBlend;
4744 Bool32 logicOp;
4745 Bool32 multiDrawIndirect;
4746 Bool32 drawIndirectFirstInstance;
4747 Bool32 depthClamp;
4748 Bool32 depthBiasClamp;
4749 Bool32 fillModeNonSolid;
4750 Bool32 depthBounds;
4751 Bool32 wideLines;
4752 Bool32 largePoints;
4753 Bool32 alphaToOne;
4754 Bool32 multiViewport;
4755 Bool32 samplerAnisotropy;
4756 Bool32 textureCompressionETC2;
4757 Bool32 textureCompressionASTC_LDR;
4758 Bool32 textureCompressionBC;
4759 Bool32 occlusionQueryPrecise;
4760 Bool32 pipelineStatisticsQuery;
4761 Bool32 vertexPipelineStoresAndAtomics;
4762 Bool32 fragmentStoresAndAtomics;
4763 Bool32 shaderTessellationAndGeometryPointSize;
4764 Bool32 shaderImageGatherExtended;
4765 Bool32 shaderStorageImageExtendedFormats;
4766 Bool32 shaderStorageImageMultisample;
4767 Bool32 shaderStorageImageReadWithoutFormat;
4768 Bool32 shaderStorageImageWriteWithoutFormat;
4769 Bool32 shaderUniformBufferArrayDynamicIndexing;
4770 Bool32 shaderSampledImageArrayDynamicIndexing;
4771 Bool32 shaderStorageBufferArrayDynamicIndexing;
4772 Bool32 shaderStorageImageArrayDynamicIndexing;
4773 Bool32 shaderClipDistance;
4774 Bool32 shaderCullDistance;
4775 Bool32 shaderFloat64;
4776 Bool32 shaderInt64;
4777 Bool32 shaderInt16;
4778 Bool32 shaderResourceResidency;
4779 Bool32 shaderResourceMinLod;
4780 Bool32 sparseBinding;
4781 Bool32 sparseResidencyBuffer;
4782 Bool32 sparseResidencyImage2D;
4783 Bool32 sparseResidencyImage3D;
4784 Bool32 sparseResidency2Samples;
4785 Bool32 sparseResidency4Samples;
4786 Bool32 sparseResidency8Samples;
4787 Bool32 sparseResidency16Samples;
4788 Bool32 sparseResidencyAliased;
4789 Bool32 variableMultisampleRate;
4790 Bool32 inheritedQueries;
4791 };
4792 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4793
4794 struct PhysicalDeviceSparseProperties
4795 {
4796 operator const VkPhysicalDeviceSparseProperties&() const
4797 {
4798 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4799 }
4800
4801 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4802 {
4803 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4804 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4805 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4806 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4807 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4808 }
4809
4810 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4811 {
4812 return !operator==( rhs );
4813 }
4814
4815 Bool32 residencyStandard2DBlockShape;
4816 Bool32 residencyStandard2DMultisampleBlockShape;
4817 Bool32 residencyStandard3DBlockShape;
4818 Bool32 residencyAlignedMipSize;
4819 Bool32 residencyNonResidentStrict;
4820 };
4821 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4822
4823 struct DrawIndirectCommand
4824 {
4825 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4826 : vertexCount( vertexCount_ )
4827 , instanceCount( instanceCount_ )
4828 , firstVertex( firstVertex_ )
4829 , firstInstance( firstInstance_ )
4830 {
4831 }
4832
4833 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4834 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004835 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004836 }
4837
4838 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4839 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004840 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004841 return *this;
4842 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004843 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4844 {
4845 vertexCount = vertexCount_;
4846 return *this;
4847 }
4848
4849 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4850 {
4851 instanceCount = instanceCount_;
4852 return *this;
4853 }
4854
4855 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4856 {
4857 firstVertex = firstVertex_;
4858 return *this;
4859 }
4860
4861 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4862 {
4863 firstInstance = firstInstance_;
4864 return *this;
4865 }
4866
4867 operator const VkDrawIndirectCommand&() const
4868 {
4869 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4870 }
4871
4872 bool operator==( DrawIndirectCommand const& rhs ) const
4873 {
4874 return ( vertexCount == rhs.vertexCount )
4875 && ( instanceCount == rhs.instanceCount )
4876 && ( firstVertex == rhs.firstVertex )
4877 && ( firstInstance == rhs.firstInstance );
4878 }
4879
4880 bool operator!=( DrawIndirectCommand const& rhs ) const
4881 {
4882 return !operator==( rhs );
4883 }
4884
4885 uint32_t vertexCount;
4886 uint32_t instanceCount;
4887 uint32_t firstVertex;
4888 uint32_t firstInstance;
4889 };
4890 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4891
4892 struct DrawIndexedIndirectCommand
4893 {
4894 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4895 : indexCount( indexCount_ )
4896 , instanceCount( instanceCount_ )
4897 , firstIndex( firstIndex_ )
4898 , vertexOffset( vertexOffset_ )
4899 , firstInstance( firstInstance_ )
4900 {
4901 }
4902
4903 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4904 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004905 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004906 }
4907
4908 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4909 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004910 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004911 return *this;
4912 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004913 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4914 {
4915 indexCount = indexCount_;
4916 return *this;
4917 }
4918
4919 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4920 {
4921 instanceCount = instanceCount_;
4922 return *this;
4923 }
4924
4925 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4926 {
4927 firstIndex = firstIndex_;
4928 return *this;
4929 }
4930
4931 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4932 {
4933 vertexOffset = vertexOffset_;
4934 return *this;
4935 }
4936
4937 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4938 {
4939 firstInstance = firstInstance_;
4940 return *this;
4941 }
4942
4943 operator const VkDrawIndexedIndirectCommand&() const
4944 {
4945 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4946 }
4947
4948 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4949 {
4950 return ( indexCount == rhs.indexCount )
4951 && ( instanceCount == rhs.instanceCount )
4952 && ( firstIndex == rhs.firstIndex )
4953 && ( vertexOffset == rhs.vertexOffset )
4954 && ( firstInstance == rhs.firstInstance );
4955 }
4956
4957 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4958 {
4959 return !operator==( rhs );
4960 }
4961
4962 uint32_t indexCount;
4963 uint32_t instanceCount;
4964 uint32_t firstIndex;
4965 int32_t vertexOffset;
4966 uint32_t firstInstance;
4967 };
4968 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4969
4970 struct DispatchIndirectCommand
4971 {
4972 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4973 : x( x_ )
4974 , y( y_ )
4975 , z( z_ )
4976 {
4977 }
4978
4979 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4980 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004981 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004982 }
4983
4984 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004986 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004987 return *this;
4988 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004989 DispatchIndirectCommand& setX( uint32_t x_ )
4990 {
4991 x = x_;
4992 return *this;
4993 }
4994
4995 DispatchIndirectCommand& setY( uint32_t y_ )
4996 {
4997 y = y_;
4998 return *this;
4999 }
5000
5001 DispatchIndirectCommand& setZ( uint32_t z_ )
5002 {
5003 z = z_;
5004 return *this;
5005 }
5006
5007 operator const VkDispatchIndirectCommand&() const
5008 {
5009 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
5010 }
5011
5012 bool operator==( DispatchIndirectCommand const& rhs ) const
5013 {
5014 return ( x == rhs.x )
5015 && ( y == rhs.y )
5016 && ( z == rhs.z );
5017 }
5018
5019 bool operator!=( DispatchIndirectCommand const& rhs ) const
5020 {
5021 return !operator==( rhs );
5022 }
5023
5024 uint32_t x;
5025 uint32_t y;
5026 uint32_t z;
5027 };
5028 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
5029
5030 struct DisplayPlanePropertiesKHR
5031 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005032 operator const VkDisplayPlanePropertiesKHR&() const
5033 {
5034 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
5035 }
5036
5037 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
5038 {
5039 return ( currentDisplay == rhs.currentDisplay )
5040 && ( currentStackIndex == rhs.currentStackIndex );
5041 }
5042
5043 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
5044 {
5045 return !operator==( rhs );
5046 }
5047
5048 DisplayKHR currentDisplay;
5049 uint32_t currentStackIndex;
5050 };
5051 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
5052
5053 struct DisplayModeParametersKHR
5054 {
5055 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
5056 : visibleRegion( visibleRegion_ )
5057 , refreshRate( refreshRate_ )
5058 {
5059 }
5060
5061 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
5062 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005063 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005064 }
5065
5066 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
5067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005068 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005069 return *this;
5070 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005071 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
5072 {
5073 visibleRegion = visibleRegion_;
5074 return *this;
5075 }
5076
5077 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
5078 {
5079 refreshRate = refreshRate_;
5080 return *this;
5081 }
5082
5083 operator const VkDisplayModeParametersKHR&() const
5084 {
5085 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
5086 }
5087
5088 bool operator==( DisplayModeParametersKHR const& rhs ) const
5089 {
5090 return ( visibleRegion == rhs.visibleRegion )
5091 && ( refreshRate == rhs.refreshRate );
5092 }
5093
5094 bool operator!=( DisplayModeParametersKHR const& rhs ) const
5095 {
5096 return !operator==( rhs );
5097 }
5098
5099 Extent2D visibleRegion;
5100 uint32_t refreshRate;
5101 };
5102 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
5103
5104 struct DisplayModePropertiesKHR
5105 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005106 operator const VkDisplayModePropertiesKHR&() const
5107 {
5108 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
5109 }
5110
5111 bool operator==( DisplayModePropertiesKHR const& rhs ) const
5112 {
5113 return ( displayMode == rhs.displayMode )
5114 && ( parameters == rhs.parameters );
5115 }
5116
5117 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
5118 {
5119 return !operator==( rhs );
5120 }
5121
5122 DisplayModeKHR displayMode;
5123 DisplayModeParametersKHR parameters;
5124 };
5125 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
5126
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005127 struct RectLayerKHR
5128 {
5129 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
5130 : offset( offset_ )
5131 , extent( extent_ )
5132 , layer( layer_ )
5133 {
5134 }
5135
5136 RectLayerKHR( VkRectLayerKHR const & rhs )
5137 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005138 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005139 }
5140
5141 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
5142 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005143 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005144 return *this;
5145 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005146 RectLayerKHR& setOffset( Offset2D offset_ )
5147 {
5148 offset = offset_;
5149 return *this;
5150 }
5151
5152 RectLayerKHR& setExtent( Extent2D extent_ )
5153 {
5154 extent = extent_;
5155 return *this;
5156 }
5157
5158 RectLayerKHR& setLayer( uint32_t layer_ )
5159 {
5160 layer = layer_;
5161 return *this;
5162 }
5163
5164 operator const VkRectLayerKHR&() const
5165 {
5166 return *reinterpret_cast<const VkRectLayerKHR*>(this);
5167 }
5168
5169 bool operator==( RectLayerKHR const& rhs ) const
5170 {
5171 return ( offset == rhs.offset )
5172 && ( extent == rhs.extent )
5173 && ( layer == rhs.layer );
5174 }
5175
5176 bool operator!=( RectLayerKHR const& rhs ) const
5177 {
5178 return !operator==( rhs );
5179 }
5180
5181 Offset2D offset;
5182 Extent2D extent;
5183 uint32_t layer;
5184 };
5185 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
5186
5187 struct PresentRegionKHR
5188 {
5189 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
5190 : rectangleCount( rectangleCount_ )
5191 , pRectangles( pRectangles_ )
5192 {
5193 }
5194
5195 PresentRegionKHR( VkPresentRegionKHR const & rhs )
5196 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005197 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005198 }
5199
5200 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
5201 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005202 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005203 return *this;
5204 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005205 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
5206 {
5207 rectangleCount = rectangleCount_;
5208 return *this;
5209 }
5210
5211 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
5212 {
5213 pRectangles = pRectangles_;
5214 return *this;
5215 }
5216
5217 operator const VkPresentRegionKHR&() const
5218 {
5219 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
5220 }
5221
5222 bool operator==( PresentRegionKHR const& rhs ) const
5223 {
5224 return ( rectangleCount == rhs.rectangleCount )
5225 && ( pRectangles == rhs.pRectangles );
5226 }
5227
5228 bool operator!=( PresentRegionKHR const& rhs ) const
5229 {
5230 return !operator==( rhs );
5231 }
5232
5233 uint32_t rectangleCount;
5234 const RectLayerKHR* pRectangles;
5235 };
5236 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5237
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005238 struct XYColorEXT
5239 {
5240 XYColorEXT( float x_ = 0, float y_ = 0 )
5241 : x( x_ )
5242 , y( y_ )
5243 {
5244 }
5245
5246 XYColorEXT( VkXYColorEXT const & rhs )
5247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005248 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005249 }
5250
5251 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005253 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005254 return *this;
5255 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005256 XYColorEXT& setX( float x_ )
5257 {
5258 x = x_;
5259 return *this;
5260 }
5261
5262 XYColorEXT& setY( float y_ )
5263 {
5264 y = y_;
5265 return *this;
5266 }
5267
5268 operator const VkXYColorEXT&() const
5269 {
5270 return *reinterpret_cast<const VkXYColorEXT*>(this);
5271 }
5272
5273 bool operator==( XYColorEXT const& rhs ) const
5274 {
5275 return ( x == rhs.x )
5276 && ( y == rhs.y );
5277 }
5278
5279 bool operator!=( XYColorEXT const& rhs ) const
5280 {
5281 return !operator==( rhs );
5282 }
5283
5284 float x;
5285 float y;
5286 };
5287 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5288
5289 struct RefreshCycleDurationGOOGLE
5290 {
5291 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5292 : refreshDuration( refreshDuration_ )
5293 {
5294 }
5295
5296 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5297 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005298 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005299 }
5300
5301 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5302 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005303 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005304 return *this;
5305 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005306 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5307 {
5308 refreshDuration = refreshDuration_;
5309 return *this;
5310 }
5311
5312 operator const VkRefreshCycleDurationGOOGLE&() const
5313 {
5314 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5315 }
5316
5317 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5318 {
5319 return ( refreshDuration == rhs.refreshDuration );
5320 }
5321
5322 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5323 {
5324 return !operator==( rhs );
5325 }
5326
5327 uint64_t refreshDuration;
5328 };
5329 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5330
5331 struct PastPresentationTimingGOOGLE
5332 {
5333 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5334 : presentID( presentID_ )
5335 , desiredPresentTime( desiredPresentTime_ )
5336 , actualPresentTime( actualPresentTime_ )
5337 , earliestPresentTime( earliestPresentTime_ )
5338 , presentMargin( presentMargin_ )
5339 {
5340 }
5341
5342 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5343 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005344 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005345 }
5346
5347 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005349 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005350 return *this;
5351 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005352 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5353 {
5354 presentID = presentID_;
5355 return *this;
5356 }
5357
5358 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5359 {
5360 desiredPresentTime = desiredPresentTime_;
5361 return *this;
5362 }
5363
5364 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5365 {
5366 actualPresentTime = actualPresentTime_;
5367 return *this;
5368 }
5369
5370 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5371 {
5372 earliestPresentTime = earliestPresentTime_;
5373 return *this;
5374 }
5375
5376 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5377 {
5378 presentMargin = presentMargin_;
5379 return *this;
5380 }
5381
5382 operator const VkPastPresentationTimingGOOGLE&() const
5383 {
5384 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5385 }
5386
5387 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5388 {
5389 return ( presentID == rhs.presentID )
5390 && ( desiredPresentTime == rhs.desiredPresentTime )
5391 && ( actualPresentTime == rhs.actualPresentTime )
5392 && ( earliestPresentTime == rhs.earliestPresentTime )
5393 && ( presentMargin == rhs.presentMargin );
5394 }
5395
5396 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5397 {
5398 return !operator==( rhs );
5399 }
5400
5401 uint32_t presentID;
5402 uint64_t desiredPresentTime;
5403 uint64_t actualPresentTime;
5404 uint64_t earliestPresentTime;
5405 uint64_t presentMargin;
5406 };
5407 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5408
5409 struct PresentTimeGOOGLE
5410 {
5411 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5412 : presentID( presentID_ )
5413 , desiredPresentTime( desiredPresentTime_ )
5414 {
5415 }
5416
5417 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5418 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005419 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005420 }
5421
5422 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005424 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005425 return *this;
5426 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005427 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5428 {
5429 presentID = presentID_;
5430 return *this;
5431 }
5432
5433 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5434 {
5435 desiredPresentTime = desiredPresentTime_;
5436 return *this;
5437 }
5438
5439 operator const VkPresentTimeGOOGLE&() const
5440 {
5441 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5442 }
5443
5444 bool operator==( PresentTimeGOOGLE const& rhs ) const
5445 {
5446 return ( presentID == rhs.presentID )
5447 && ( desiredPresentTime == rhs.desiredPresentTime );
5448 }
5449
5450 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5451 {
5452 return !operator==( rhs );
5453 }
5454
5455 uint32_t presentID;
5456 uint64_t desiredPresentTime;
5457 };
5458 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5459
Mark Young0f183a82017-02-28 09:58:04 -07005460 struct ViewportWScalingNV
5461 {
5462 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5463 : xcoeff( xcoeff_ )
5464 , ycoeff( ycoeff_ )
5465 {
5466 }
5467
5468 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5469 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005470 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005471 }
5472
5473 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5474 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005475 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005476 return *this;
5477 }
Mark Young0f183a82017-02-28 09:58:04 -07005478 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5479 {
5480 xcoeff = xcoeff_;
5481 return *this;
5482 }
5483
5484 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5485 {
5486 ycoeff = ycoeff_;
5487 return *this;
5488 }
5489
5490 operator const VkViewportWScalingNV&() const
5491 {
5492 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5493 }
5494
5495 bool operator==( ViewportWScalingNV const& rhs ) const
5496 {
5497 return ( xcoeff == rhs.xcoeff )
5498 && ( ycoeff == rhs.ycoeff );
5499 }
5500
5501 bool operator!=( ViewportWScalingNV const& rhs ) const
5502 {
5503 return !operator==( rhs );
5504 }
5505
5506 float xcoeff;
5507 float ycoeff;
5508 };
5509 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5510
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06005511 struct SampleLocationEXT
5512 {
5513 SampleLocationEXT( float x_ = 0, float y_ = 0 )
5514 : x( x_ )
5515 , y( y_ )
5516 {
5517 }
5518
5519 SampleLocationEXT( VkSampleLocationEXT const & rhs )
5520 {
5521 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5522 }
5523
5524 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
5525 {
5526 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5527 return *this;
5528 }
5529 SampleLocationEXT& setX( float x_ )
5530 {
5531 x = x_;
5532 return *this;
5533 }
5534
5535 SampleLocationEXT& setY( float y_ )
5536 {
5537 y = y_;
5538 return *this;
5539 }
5540
5541 operator const VkSampleLocationEXT&() const
5542 {
5543 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
5544 }
5545
5546 bool operator==( SampleLocationEXT const& rhs ) const
5547 {
5548 return ( x == rhs.x )
5549 && ( y == rhs.y );
5550 }
5551
5552 bool operator!=( SampleLocationEXT const& rhs ) const
5553 {
5554 return !operator==( rhs );
5555 }
5556
5557 float x;
5558 float y;
5559 };
5560 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
5561
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -06005562 struct ShaderResourceUsageAMD
5563 {
5564 operator const VkShaderResourceUsageAMD&() const
5565 {
5566 return *reinterpret_cast<const VkShaderResourceUsageAMD*>(this);
5567 }
5568
5569 bool operator==( ShaderResourceUsageAMD const& rhs ) const
5570 {
5571 return ( numUsedVgprs == rhs.numUsedVgprs )
5572 && ( numUsedSgprs == rhs.numUsedSgprs )
5573 && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup )
5574 && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes )
5575 && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
5576 }
5577
5578 bool operator!=( ShaderResourceUsageAMD const& rhs ) const
5579 {
5580 return !operator==( rhs );
5581 }
5582
5583 uint32_t numUsedVgprs;
5584 uint32_t numUsedSgprs;
5585 uint32_t ldsSizePerLocalWorkGroup;
5586 size_t ldsUsageSizeInBytes;
5587 size_t scratchMemUsageInBytes;
5588 };
5589 static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" );
5590
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005591 enum class ImageLayout
5592 {
5593 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5594 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5595 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5596 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5597 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5598 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5599 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5600 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5601 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005602 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06005603 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
5604 eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
5605 eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005606 };
5607
5608 struct DescriptorImageInfo
5609 {
5610 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5611 : sampler( sampler_ )
5612 , imageView( imageView_ )
5613 , imageLayout( imageLayout_ )
5614 {
5615 }
5616
5617 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5618 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005619 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005620 }
5621
5622 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005624 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005625 return *this;
5626 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005627 DescriptorImageInfo& setSampler( Sampler sampler_ )
5628 {
5629 sampler = sampler_;
5630 return *this;
5631 }
5632
5633 DescriptorImageInfo& setImageView( ImageView imageView_ )
5634 {
5635 imageView = imageView_;
5636 return *this;
5637 }
5638
5639 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5640 {
5641 imageLayout = imageLayout_;
5642 return *this;
5643 }
5644
5645 operator const VkDescriptorImageInfo&() const
5646 {
5647 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5648 }
5649
5650 bool operator==( DescriptorImageInfo const& rhs ) const
5651 {
5652 return ( sampler == rhs.sampler )
5653 && ( imageView == rhs.imageView )
5654 && ( imageLayout == rhs.imageLayout );
5655 }
5656
5657 bool operator!=( DescriptorImageInfo const& rhs ) const
5658 {
5659 return !operator==( rhs );
5660 }
5661
5662 Sampler sampler;
5663 ImageView imageView;
5664 ImageLayout imageLayout;
5665 };
5666 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5667
5668 struct AttachmentReference
5669 {
5670 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5671 : attachment( attachment_ )
5672 , layout( layout_ )
5673 {
5674 }
5675
5676 AttachmentReference( VkAttachmentReference const & rhs )
5677 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005678 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005679 }
5680
5681 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5682 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005683 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005684 return *this;
5685 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005686 AttachmentReference& setAttachment( uint32_t attachment_ )
5687 {
5688 attachment = attachment_;
5689 return *this;
5690 }
5691
5692 AttachmentReference& setLayout( ImageLayout layout_ )
5693 {
5694 layout = layout_;
5695 return *this;
5696 }
5697
5698 operator const VkAttachmentReference&() const
5699 {
5700 return *reinterpret_cast<const VkAttachmentReference*>(this);
5701 }
5702
5703 bool operator==( AttachmentReference const& rhs ) const
5704 {
5705 return ( attachment == rhs.attachment )
5706 && ( layout == rhs.layout );
5707 }
5708
5709 bool operator!=( AttachmentReference const& rhs ) const
5710 {
5711 return !operator==( rhs );
5712 }
5713
5714 uint32_t attachment;
5715 ImageLayout layout;
5716 };
5717 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5718
5719 enum class AttachmentLoadOp
5720 {
5721 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5722 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5723 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5724 };
5725
5726 enum class AttachmentStoreOp
5727 {
5728 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5729 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5730 };
5731
5732 enum class ImageType
5733 {
5734 e1D = VK_IMAGE_TYPE_1D,
5735 e2D = VK_IMAGE_TYPE_2D,
5736 e3D = VK_IMAGE_TYPE_3D
5737 };
5738
5739 enum class ImageTiling
5740 {
5741 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5742 eLinear = VK_IMAGE_TILING_LINEAR
5743 };
5744
5745 enum class ImageViewType
5746 {
5747 e1D = VK_IMAGE_VIEW_TYPE_1D,
5748 e2D = VK_IMAGE_VIEW_TYPE_2D,
5749 e3D = VK_IMAGE_VIEW_TYPE_3D,
5750 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5751 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5752 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5753 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5754 };
5755
5756 enum class CommandBufferLevel
5757 {
5758 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5759 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5760 };
5761
5762 enum class ComponentSwizzle
5763 {
5764 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5765 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5766 eOne = VK_COMPONENT_SWIZZLE_ONE,
5767 eR = VK_COMPONENT_SWIZZLE_R,
5768 eG = VK_COMPONENT_SWIZZLE_G,
5769 eB = VK_COMPONENT_SWIZZLE_B,
5770 eA = VK_COMPONENT_SWIZZLE_A
5771 };
5772
5773 struct ComponentMapping
5774 {
5775 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5776 : r( r_ )
5777 , g( g_ )
5778 , b( b_ )
5779 , a( a_ )
5780 {
5781 }
5782
5783 ComponentMapping( VkComponentMapping const & rhs )
5784 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005785 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005786 }
5787
5788 ComponentMapping& operator=( VkComponentMapping const & rhs )
5789 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005790 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005791 return *this;
5792 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005793 ComponentMapping& setR( ComponentSwizzle r_ )
5794 {
5795 r = r_;
5796 return *this;
5797 }
5798
5799 ComponentMapping& setG( ComponentSwizzle g_ )
5800 {
5801 g = g_;
5802 return *this;
5803 }
5804
5805 ComponentMapping& setB( ComponentSwizzle b_ )
5806 {
5807 b = b_;
5808 return *this;
5809 }
5810
5811 ComponentMapping& setA( ComponentSwizzle a_ )
5812 {
5813 a = a_;
5814 return *this;
5815 }
5816
5817 operator const VkComponentMapping&() const
5818 {
5819 return *reinterpret_cast<const VkComponentMapping*>(this);
5820 }
5821
5822 bool operator==( ComponentMapping const& rhs ) const
5823 {
5824 return ( r == rhs.r )
5825 && ( g == rhs.g )
5826 && ( b == rhs.b )
5827 && ( a == rhs.a );
5828 }
5829
5830 bool operator!=( ComponentMapping const& rhs ) const
5831 {
5832 return !operator==( rhs );
5833 }
5834
5835 ComponentSwizzle r;
5836 ComponentSwizzle g;
5837 ComponentSwizzle b;
5838 ComponentSwizzle a;
5839 };
5840 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5841
5842 enum class DescriptorType
5843 {
5844 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5845 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5846 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5847 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5848 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5849 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5850 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5851 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5852 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5853 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5854 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5855 };
5856
5857 struct DescriptorPoolSize
5858 {
5859 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5860 : type( type_ )
5861 , descriptorCount( descriptorCount_ )
5862 {
5863 }
5864
5865 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5866 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005867 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005868 }
5869
5870 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5871 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005872 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005873 return *this;
5874 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005875 DescriptorPoolSize& setType( DescriptorType type_ )
5876 {
5877 type = type_;
5878 return *this;
5879 }
5880
5881 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5882 {
5883 descriptorCount = descriptorCount_;
5884 return *this;
5885 }
5886
5887 operator const VkDescriptorPoolSize&() const
5888 {
5889 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5890 }
5891
5892 bool operator==( DescriptorPoolSize const& rhs ) const
5893 {
5894 return ( type == rhs.type )
5895 && ( descriptorCount == rhs.descriptorCount );
5896 }
5897
5898 bool operator!=( DescriptorPoolSize const& rhs ) const
5899 {
5900 return !operator==( rhs );
5901 }
5902
5903 DescriptorType type;
5904 uint32_t descriptorCount;
5905 };
5906 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5907
Mark Young0f183a82017-02-28 09:58:04 -07005908 struct DescriptorUpdateTemplateEntryKHR
5909 {
5910 DescriptorUpdateTemplateEntryKHR( uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, size_t offset_ = 0, size_t stride_ = 0 )
5911 : dstBinding( dstBinding_ )
5912 , dstArrayElement( dstArrayElement_ )
5913 , descriptorCount( descriptorCount_ )
5914 , descriptorType( descriptorType_ )
5915 , offset( offset_ )
5916 , stride( stride_ )
5917 {
5918 }
5919
5920 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005922 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005923 }
5924
5925 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005927 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005928 return *this;
5929 }
Mark Young0f183a82017-02-28 09:58:04 -07005930 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5931 {
5932 dstBinding = dstBinding_;
5933 return *this;
5934 }
5935
5936 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5937 {
5938 dstArrayElement = dstArrayElement_;
5939 return *this;
5940 }
5941
5942 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5943 {
5944 descriptorCount = descriptorCount_;
5945 return *this;
5946 }
5947
5948 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5949 {
5950 descriptorType = descriptorType_;
5951 return *this;
5952 }
5953
5954 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5955 {
5956 offset = offset_;
5957 return *this;
5958 }
5959
5960 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5961 {
5962 stride = stride_;
5963 return *this;
5964 }
5965
5966 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5967 {
5968 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5969 }
5970
5971 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5972 {
5973 return ( dstBinding == rhs.dstBinding )
5974 && ( dstArrayElement == rhs.dstArrayElement )
5975 && ( descriptorCount == rhs.descriptorCount )
5976 && ( descriptorType == rhs.descriptorType )
5977 && ( offset == rhs.offset )
5978 && ( stride == rhs.stride );
5979 }
5980
5981 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5982 {
5983 return !operator==( rhs );
5984 }
5985
5986 uint32_t dstBinding;
5987 uint32_t dstArrayElement;
5988 uint32_t descriptorCount;
5989 DescriptorType descriptorType;
5990 size_t offset;
5991 size_t stride;
5992 };
5993 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5994
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005995 enum class QueryType
5996 {
5997 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5998 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5999 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
6000 };
6001
6002 enum class BorderColor
6003 {
6004 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
6005 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
6006 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
6007 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
6008 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
6009 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
6010 };
6011
6012 enum class PipelineBindPoint
6013 {
6014 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
6015 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
6016 };
6017
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006018 enum class PipelineCacheHeaderVersion
6019 {
6020 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
6021 };
6022
6023 enum class PrimitiveTopology
6024 {
6025 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
6026 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
6027 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
6028 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
6029 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
6030 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
6031 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
6032 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
6033 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
6034 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
6035 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
6036 };
6037
6038 enum class SharingMode
6039 {
6040 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
6041 eConcurrent = VK_SHARING_MODE_CONCURRENT
6042 };
6043
6044 enum class IndexType
6045 {
6046 eUint16 = VK_INDEX_TYPE_UINT16,
6047 eUint32 = VK_INDEX_TYPE_UINT32
6048 };
6049
6050 enum class Filter
6051 {
6052 eNearest = VK_FILTER_NEAREST,
6053 eLinear = VK_FILTER_LINEAR,
6054 eCubicIMG = VK_FILTER_CUBIC_IMG
6055 };
6056
6057 enum class SamplerMipmapMode
6058 {
6059 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
6060 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
6061 };
6062
6063 enum class SamplerAddressMode
6064 {
6065 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
6066 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
6067 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
6068 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
6069 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
6070 };
6071
6072 enum class CompareOp
6073 {
6074 eNever = VK_COMPARE_OP_NEVER,
6075 eLess = VK_COMPARE_OP_LESS,
6076 eEqual = VK_COMPARE_OP_EQUAL,
6077 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
6078 eGreater = VK_COMPARE_OP_GREATER,
6079 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
6080 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
6081 eAlways = VK_COMPARE_OP_ALWAYS
6082 };
6083
6084 enum class PolygonMode
6085 {
6086 eFill = VK_POLYGON_MODE_FILL,
6087 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006088 ePoint = VK_POLYGON_MODE_POINT,
6089 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006090 };
6091
6092 enum class CullModeFlagBits
6093 {
6094 eNone = VK_CULL_MODE_NONE,
6095 eFront = VK_CULL_MODE_FRONT_BIT,
6096 eBack = VK_CULL_MODE_BACK_BIT,
6097 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
6098 };
6099
6100 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
6101
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006102 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006103 {
6104 return CullModeFlags( bit0 ) | bit1;
6105 }
6106
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006107 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
6108 {
6109 return ~( CullModeFlags( bits ) );
6110 }
6111
6112 template <> struct FlagTraits<CullModeFlagBits>
6113 {
6114 enum
6115 {
6116 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
6117 };
6118 };
6119
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006120 enum class FrontFace
6121 {
6122 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
6123 eClockwise = VK_FRONT_FACE_CLOCKWISE
6124 };
6125
6126 enum class BlendFactor
6127 {
6128 eZero = VK_BLEND_FACTOR_ZERO,
6129 eOne = VK_BLEND_FACTOR_ONE,
6130 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
6131 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
6132 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
6133 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
6134 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
6135 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
6136 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
6137 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
6138 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
6139 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
6140 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
6141 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
6142 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
6143 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
6144 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
6145 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
6146 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
6147 };
6148
6149 enum class BlendOp
6150 {
6151 eAdd = VK_BLEND_OP_ADD,
6152 eSubtract = VK_BLEND_OP_SUBTRACT,
6153 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
6154 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006155 eMax = VK_BLEND_OP_MAX,
6156 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
6157 eSrcEXT = VK_BLEND_OP_SRC_EXT,
6158 eDstEXT = VK_BLEND_OP_DST_EXT,
6159 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
6160 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
6161 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
6162 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
6163 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
6164 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
6165 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
6166 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
6167 eXorEXT = VK_BLEND_OP_XOR_EXT,
6168 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
6169 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
6170 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
6171 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
6172 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
6173 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
6174 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
6175 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
6176 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
6177 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
6178 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
6179 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
6180 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
6181 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
6182 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
6183 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
6184 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
6185 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
6186 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
6187 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
6188 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
6189 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
6190 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
6191 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
6192 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
6193 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
6194 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
6195 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
6196 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
6197 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
6198 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
6199 eRedEXT = VK_BLEND_OP_RED_EXT,
6200 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
6201 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006202 };
6203
6204 enum class StencilOp
6205 {
6206 eKeep = VK_STENCIL_OP_KEEP,
6207 eZero = VK_STENCIL_OP_ZERO,
6208 eReplace = VK_STENCIL_OP_REPLACE,
6209 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
6210 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
6211 eInvert = VK_STENCIL_OP_INVERT,
6212 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
6213 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
6214 };
6215
6216 struct StencilOpState
6217 {
6218 StencilOpState( StencilOp failOp_ = StencilOp::eKeep, StencilOp passOp_ = StencilOp::eKeep, StencilOp depthFailOp_ = StencilOp::eKeep, CompareOp compareOp_ = CompareOp::eNever, uint32_t compareMask_ = 0, uint32_t writeMask_ = 0, uint32_t reference_ = 0 )
6219 : failOp( failOp_ )
6220 , passOp( passOp_ )
6221 , depthFailOp( depthFailOp_ )
6222 , compareOp( compareOp_ )
6223 , compareMask( compareMask_ )
6224 , writeMask( writeMask_ )
6225 , reference( reference_ )
6226 {
6227 }
6228
6229 StencilOpState( VkStencilOpState const & rhs )
6230 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006231 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006232 }
6233
6234 StencilOpState& operator=( VkStencilOpState const & rhs )
6235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006236 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006237 return *this;
6238 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006239 StencilOpState& setFailOp( StencilOp failOp_ )
6240 {
6241 failOp = failOp_;
6242 return *this;
6243 }
6244
6245 StencilOpState& setPassOp( StencilOp passOp_ )
6246 {
6247 passOp = passOp_;
6248 return *this;
6249 }
6250
6251 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
6252 {
6253 depthFailOp = depthFailOp_;
6254 return *this;
6255 }
6256
6257 StencilOpState& setCompareOp( CompareOp compareOp_ )
6258 {
6259 compareOp = compareOp_;
6260 return *this;
6261 }
6262
6263 StencilOpState& setCompareMask( uint32_t compareMask_ )
6264 {
6265 compareMask = compareMask_;
6266 return *this;
6267 }
6268
6269 StencilOpState& setWriteMask( uint32_t writeMask_ )
6270 {
6271 writeMask = writeMask_;
6272 return *this;
6273 }
6274
6275 StencilOpState& setReference( uint32_t reference_ )
6276 {
6277 reference = reference_;
6278 return *this;
6279 }
6280
6281 operator const VkStencilOpState&() const
6282 {
6283 return *reinterpret_cast<const VkStencilOpState*>(this);
6284 }
6285
6286 bool operator==( StencilOpState const& rhs ) const
6287 {
6288 return ( failOp == rhs.failOp )
6289 && ( passOp == rhs.passOp )
6290 && ( depthFailOp == rhs.depthFailOp )
6291 && ( compareOp == rhs.compareOp )
6292 && ( compareMask == rhs.compareMask )
6293 && ( writeMask == rhs.writeMask )
6294 && ( reference == rhs.reference );
6295 }
6296
6297 bool operator!=( StencilOpState const& rhs ) const
6298 {
6299 return !operator==( rhs );
6300 }
6301
6302 StencilOp failOp;
6303 StencilOp passOp;
6304 StencilOp depthFailOp;
6305 CompareOp compareOp;
6306 uint32_t compareMask;
6307 uint32_t writeMask;
6308 uint32_t reference;
6309 };
6310 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
6311
6312 enum class LogicOp
6313 {
6314 eClear = VK_LOGIC_OP_CLEAR,
6315 eAnd = VK_LOGIC_OP_AND,
6316 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6317 eCopy = VK_LOGIC_OP_COPY,
6318 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6319 eNoOp = VK_LOGIC_OP_NO_OP,
6320 eXor = VK_LOGIC_OP_XOR,
6321 eOr = VK_LOGIC_OP_OR,
6322 eNor = VK_LOGIC_OP_NOR,
6323 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6324 eInvert = VK_LOGIC_OP_INVERT,
6325 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6326 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6327 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6328 eNand = VK_LOGIC_OP_NAND,
6329 eSet = VK_LOGIC_OP_SET
6330 };
6331
6332 enum class InternalAllocationType
6333 {
6334 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6335 };
6336
6337 enum class SystemAllocationScope
6338 {
6339 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6340 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6341 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6342 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6343 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6344 };
6345
6346 enum class PhysicalDeviceType
6347 {
6348 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6349 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6350 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6351 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6352 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6353 };
6354
6355 enum class VertexInputRate
6356 {
6357 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6358 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6359 };
6360
6361 struct VertexInputBindingDescription
6362 {
6363 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6364 : binding( binding_ )
6365 , stride( stride_ )
6366 , inputRate( inputRate_ )
6367 {
6368 }
6369
6370 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6371 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006372 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006373 }
6374
6375 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6376 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006377 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006378 return *this;
6379 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006380 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6381 {
6382 binding = binding_;
6383 return *this;
6384 }
6385
6386 VertexInputBindingDescription& setStride( uint32_t stride_ )
6387 {
6388 stride = stride_;
6389 return *this;
6390 }
6391
6392 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6393 {
6394 inputRate = inputRate_;
6395 return *this;
6396 }
6397
6398 operator const VkVertexInputBindingDescription&() const
6399 {
6400 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6401 }
6402
6403 bool operator==( VertexInputBindingDescription const& rhs ) const
6404 {
6405 return ( binding == rhs.binding )
6406 && ( stride == rhs.stride )
6407 && ( inputRate == rhs.inputRate );
6408 }
6409
6410 bool operator!=( VertexInputBindingDescription const& rhs ) const
6411 {
6412 return !operator==( rhs );
6413 }
6414
6415 uint32_t binding;
6416 uint32_t stride;
6417 VertexInputRate inputRate;
6418 };
6419 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6420
6421 enum class Format
6422 {
6423 eUndefined = VK_FORMAT_UNDEFINED,
6424 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6425 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6426 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6427 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6428 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6429 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6430 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6431 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6432 eR8Unorm = VK_FORMAT_R8_UNORM,
6433 eR8Snorm = VK_FORMAT_R8_SNORM,
6434 eR8Uscaled = VK_FORMAT_R8_USCALED,
6435 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6436 eR8Uint = VK_FORMAT_R8_UINT,
6437 eR8Sint = VK_FORMAT_R8_SINT,
6438 eR8Srgb = VK_FORMAT_R8_SRGB,
6439 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6440 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6441 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6442 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6443 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6444 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6445 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6446 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6447 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6448 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6449 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6450 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6451 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6452 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6453 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6454 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6455 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6456 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6457 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6458 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6459 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6460 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6461 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6462 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6463 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6464 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6465 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6466 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6467 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6468 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6469 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6470 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6471 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6472 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6473 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6474 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6475 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6476 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6477 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6478 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6479 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6480 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6481 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6482 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6483 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6484 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6485 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6486 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6487 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6488 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6489 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6490 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6491 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6492 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6493 eR16Unorm = VK_FORMAT_R16_UNORM,
6494 eR16Snorm = VK_FORMAT_R16_SNORM,
6495 eR16Uscaled = VK_FORMAT_R16_USCALED,
6496 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6497 eR16Uint = VK_FORMAT_R16_UINT,
6498 eR16Sint = VK_FORMAT_R16_SINT,
6499 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6500 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6501 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6502 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6503 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6504 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6505 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6506 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6507 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6508 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6509 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6510 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6511 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6512 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6513 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6514 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6515 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6516 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6517 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6518 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6519 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6520 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6521 eR32Uint = VK_FORMAT_R32_UINT,
6522 eR32Sint = VK_FORMAT_R32_SINT,
6523 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6524 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6525 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6526 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6527 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6528 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6529 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6530 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6531 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6532 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6533 eR64Uint = VK_FORMAT_R64_UINT,
6534 eR64Sint = VK_FORMAT_R64_SINT,
6535 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6536 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6537 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6538 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6539 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6540 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6541 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6542 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6543 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6544 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6545 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6546 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6547 eD16Unorm = VK_FORMAT_D16_UNORM,
6548 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6549 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6550 eS8Uint = VK_FORMAT_S8_UINT,
6551 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6552 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6553 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6554 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6555 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6556 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6557 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6558 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6559 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6560 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6561 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6562 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6563 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6564 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6565 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6566 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6567 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6568 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6569 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6570 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6571 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6572 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6573 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6574 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6575 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6576 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6577 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6578 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6579 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6580 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6581 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6582 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6583 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6584 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6585 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6586 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6587 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6588 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6589 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6590 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6591 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6592 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6593 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6594 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6595 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6596 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6597 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6598 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6599 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6600 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6601 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6602 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6603 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6604 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6605 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6606 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006607 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6608 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6609 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6610 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6611 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6612 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6613 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6614 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006615 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,
6616 eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR,
6617 eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR,
6618 eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR,
6619 eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR,
6620 eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR,
6621 eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR,
6622 eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR,
6623 eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR,
6624 eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR,
6625 eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR,
6626 eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR,
6627 eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR,
6628 eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR,
6629 eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR,
6630 eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR,
6631 eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR,
6632 eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR,
6633 eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR,
6634 eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR,
6635 eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR,
6636 eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR,
6637 eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR,
6638 eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR,
6639 eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR,
6640 eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR,
6641 eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR,
6642 eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR,
6643 eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR,
6644 eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR,
6645 eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR,
6646 eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR,
6647 eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR,
6648 eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR,
6649 eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006650 };
6651
6652 struct VertexInputAttributeDescription
6653 {
6654 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6655 : location( location_ )
6656 , binding( binding_ )
6657 , format( format_ )
6658 , offset( offset_ )
6659 {
6660 }
6661
6662 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006664 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006665 }
6666
6667 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006669 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006670 return *this;
6671 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006672 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6673 {
6674 location = location_;
6675 return *this;
6676 }
6677
6678 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6679 {
6680 binding = binding_;
6681 return *this;
6682 }
6683
6684 VertexInputAttributeDescription& setFormat( Format format_ )
6685 {
6686 format = format_;
6687 return *this;
6688 }
6689
6690 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6691 {
6692 offset = offset_;
6693 return *this;
6694 }
6695
6696 operator const VkVertexInputAttributeDescription&() const
6697 {
6698 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6699 }
6700
6701 bool operator==( VertexInputAttributeDescription const& rhs ) const
6702 {
6703 return ( location == rhs.location )
6704 && ( binding == rhs.binding )
6705 && ( format == rhs.format )
6706 && ( offset == rhs.offset );
6707 }
6708
6709 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6710 {
6711 return !operator==( rhs );
6712 }
6713
6714 uint32_t location;
6715 uint32_t binding;
6716 Format format;
6717 uint32_t offset;
6718 };
6719 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6720
6721 enum class StructureType
6722 {
6723 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6724 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6725 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6726 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6727 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6728 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6729 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6730 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6731 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6732 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6733 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6734 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6735 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6736 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6737 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6738 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6739 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6740 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6741 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6742 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6743 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6744 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6745 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6746 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6747 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6748 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6749 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6750 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6751 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6752 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6753 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6754 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6755 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6756 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6757 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6758 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6759 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6760 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6761 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6762 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6763 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6764 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6765 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6766 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6767 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6768 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6769 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6770 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6771 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6772 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6773 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6774 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6775 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6776 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6777 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6778 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6779 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6780 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6781 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6782 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6783 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6784 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6785 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6786 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6787 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6788 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6789 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006790 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006791 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006792 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6793 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6794 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006795 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6796 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6797 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6798 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006799 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006800 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6801 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6802 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6803 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6804 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6805 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6806 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6807 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6808 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006809 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006810 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6811 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6812 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6813 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006814 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006815 eBindBufferMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX,
6816 eBindImageMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006817 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6818 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6819 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006820 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6821 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006822 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006823 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006824 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6825 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006826 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6827 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6828 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6829 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6830 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6831 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6832 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6833 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6834 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6835 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6836 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6837 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6838 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6839 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6840 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6841 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6842 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6843 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6844 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6845 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6846 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6847 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6848 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6849 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6850 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006851 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006852 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006853 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006854 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006855 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6856 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6857 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6858 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6859 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006860 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006861 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Lobodzinski11a1a342017-08-21 10:34:38 -06006862 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
Mark Young39389872017-01-19 21:10:49 -07006863 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6864 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6865 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006866 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006867 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006868 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6869 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6870 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6871 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07006872 ePhysicalDeviceConservativeRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT,
6873 ePipelineRasterizationConservativeStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006874 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006875 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006876 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6877 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6878 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6879 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6880 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6881 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6882 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6883 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006884 ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR,
6885 eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
6886 eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR,
6887 ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006888 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6889 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6890 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006891 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006892 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006893 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006894 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6895 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006896 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6897 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006898 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
6899 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
6900 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
6901 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
6902 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006903 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6904 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6905 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6906 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6907 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006908 eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006909 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6910 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6911 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6912 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006913 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006914 eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR,
6915 eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR,
6916 eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR,
6917 eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR,
6918 ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR,
6919 eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR,
6920 eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR,
6921 eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006922 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -06006923 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
Mark Lobodzinski417d5702017-11-27 12:00:45 -07006924 eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
6925 eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
6926 eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
6927 ePhysicalDeviceExternalMemoryHostPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006928 };
6929
6930 struct ApplicationInfo
6931 {
6932 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07006933 : pApplicationName( pApplicationName_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006934 , applicationVersion( applicationVersion_ )
6935 , pEngineName( pEngineName_ )
6936 , engineVersion( engineVersion_ )
6937 , apiVersion( apiVersion_ )
6938 {
6939 }
6940
6941 ApplicationInfo( VkApplicationInfo const & rhs )
6942 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006943 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006944 }
6945
6946 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6947 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006948 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006949 return *this;
6950 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006951 ApplicationInfo& setPNext( const void* pNext_ )
6952 {
6953 pNext = pNext_;
6954 return *this;
6955 }
6956
6957 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6958 {
6959 pApplicationName = pApplicationName_;
6960 return *this;
6961 }
6962
6963 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6964 {
6965 applicationVersion = applicationVersion_;
6966 return *this;
6967 }
6968
6969 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6970 {
6971 pEngineName = pEngineName_;
6972 return *this;
6973 }
6974
6975 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6976 {
6977 engineVersion = engineVersion_;
6978 return *this;
6979 }
6980
6981 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6982 {
6983 apiVersion = apiVersion_;
6984 return *this;
6985 }
6986
6987 operator const VkApplicationInfo&() const
6988 {
6989 return *reinterpret_cast<const VkApplicationInfo*>(this);
6990 }
6991
6992 bool operator==( ApplicationInfo const& rhs ) const
6993 {
6994 return ( sType == rhs.sType )
6995 && ( pNext == rhs.pNext )
6996 && ( pApplicationName == rhs.pApplicationName )
6997 && ( applicationVersion == rhs.applicationVersion )
6998 && ( pEngineName == rhs.pEngineName )
6999 && ( engineVersion == rhs.engineVersion )
7000 && ( apiVersion == rhs.apiVersion );
7001 }
7002
7003 bool operator!=( ApplicationInfo const& rhs ) const
7004 {
7005 return !operator==( rhs );
7006 }
7007
7008 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007009 StructureType sType = StructureType::eApplicationInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007010
7011 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007012 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007013 const char* pApplicationName;
7014 uint32_t applicationVersion;
7015 const char* pEngineName;
7016 uint32_t engineVersion;
7017 uint32_t apiVersion;
7018 };
7019 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
7020
7021 struct DeviceQueueCreateInfo
7022 {
7023 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007024 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007025 , queueFamilyIndex( queueFamilyIndex_ )
7026 , queueCount( queueCount_ )
7027 , pQueuePriorities( pQueuePriorities_ )
7028 {
7029 }
7030
7031 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
7032 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007033 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007034 }
7035
7036 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
7037 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007038 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007039 return *this;
7040 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007041 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
7042 {
7043 pNext = pNext_;
7044 return *this;
7045 }
7046
7047 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
7048 {
7049 flags = flags_;
7050 return *this;
7051 }
7052
7053 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
7054 {
7055 queueFamilyIndex = queueFamilyIndex_;
7056 return *this;
7057 }
7058
7059 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
7060 {
7061 queueCount = queueCount_;
7062 return *this;
7063 }
7064
7065 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
7066 {
7067 pQueuePriorities = pQueuePriorities_;
7068 return *this;
7069 }
7070
7071 operator const VkDeviceQueueCreateInfo&() const
7072 {
7073 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
7074 }
7075
7076 bool operator==( DeviceQueueCreateInfo const& rhs ) const
7077 {
7078 return ( sType == rhs.sType )
7079 && ( pNext == rhs.pNext )
7080 && ( flags == rhs.flags )
7081 && ( queueFamilyIndex == rhs.queueFamilyIndex )
7082 && ( queueCount == rhs.queueCount )
7083 && ( pQueuePriorities == rhs.pQueuePriorities );
7084 }
7085
7086 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
7087 {
7088 return !operator==( rhs );
7089 }
7090
7091 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007092 StructureType sType = StructureType::eDeviceQueueCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007093
7094 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007095 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007096 DeviceQueueCreateFlags flags;
7097 uint32_t queueFamilyIndex;
7098 uint32_t queueCount;
7099 const float* pQueuePriorities;
7100 };
7101 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
7102
7103 struct DeviceCreateInfo
7104 {
7105 DeviceCreateInfo( DeviceCreateFlags flags_ = DeviceCreateFlags(), uint32_t queueCreateInfoCount_ = 0, const DeviceQueueCreateInfo* pQueueCreateInfos_ = nullptr, uint32_t enabledLayerCount_ = 0, const char* const* ppEnabledLayerNames_ = nullptr, uint32_t enabledExtensionCount_ = 0, const char* const* ppEnabledExtensionNames_ = nullptr, const PhysicalDeviceFeatures* pEnabledFeatures_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007106 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007107 , queueCreateInfoCount( queueCreateInfoCount_ )
7108 , pQueueCreateInfos( pQueueCreateInfos_ )
7109 , enabledLayerCount( enabledLayerCount_ )
7110 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7111 , enabledExtensionCount( enabledExtensionCount_ )
7112 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7113 , pEnabledFeatures( pEnabledFeatures_ )
7114 {
7115 }
7116
7117 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
7118 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007119 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007120 }
7121
7122 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
7123 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007124 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007125 return *this;
7126 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007127 DeviceCreateInfo& setPNext( const void* pNext_ )
7128 {
7129 pNext = pNext_;
7130 return *this;
7131 }
7132
7133 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
7134 {
7135 flags = flags_;
7136 return *this;
7137 }
7138
7139 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
7140 {
7141 queueCreateInfoCount = queueCreateInfoCount_;
7142 return *this;
7143 }
7144
7145 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
7146 {
7147 pQueueCreateInfos = pQueueCreateInfos_;
7148 return *this;
7149 }
7150
7151 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7152 {
7153 enabledLayerCount = enabledLayerCount_;
7154 return *this;
7155 }
7156
7157 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7158 {
7159 ppEnabledLayerNames = ppEnabledLayerNames_;
7160 return *this;
7161 }
7162
7163 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7164 {
7165 enabledExtensionCount = enabledExtensionCount_;
7166 return *this;
7167 }
7168
7169 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7170 {
7171 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7172 return *this;
7173 }
7174
7175 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
7176 {
7177 pEnabledFeatures = pEnabledFeatures_;
7178 return *this;
7179 }
7180
7181 operator const VkDeviceCreateInfo&() const
7182 {
7183 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
7184 }
7185
7186 bool operator==( DeviceCreateInfo const& rhs ) const
7187 {
7188 return ( sType == rhs.sType )
7189 && ( pNext == rhs.pNext )
7190 && ( flags == rhs.flags )
7191 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
7192 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
7193 && ( enabledLayerCount == rhs.enabledLayerCount )
7194 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7195 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7196 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
7197 && ( pEnabledFeatures == rhs.pEnabledFeatures );
7198 }
7199
7200 bool operator!=( DeviceCreateInfo const& rhs ) const
7201 {
7202 return !operator==( rhs );
7203 }
7204
7205 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007206 StructureType sType = StructureType::eDeviceCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007207
7208 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007209 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007210 DeviceCreateFlags flags;
7211 uint32_t queueCreateInfoCount;
7212 const DeviceQueueCreateInfo* pQueueCreateInfos;
7213 uint32_t enabledLayerCount;
7214 const char* const* ppEnabledLayerNames;
7215 uint32_t enabledExtensionCount;
7216 const char* const* ppEnabledExtensionNames;
7217 const PhysicalDeviceFeatures* pEnabledFeatures;
7218 };
7219 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
7220
7221 struct InstanceCreateInfo
7222 {
7223 InstanceCreateInfo( InstanceCreateFlags flags_ = InstanceCreateFlags(), const ApplicationInfo* pApplicationInfo_ = nullptr, uint32_t enabledLayerCount_ = 0, const char* const* ppEnabledLayerNames_ = nullptr, uint32_t enabledExtensionCount_ = 0, const char* const* ppEnabledExtensionNames_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007224 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007225 , pApplicationInfo( pApplicationInfo_ )
7226 , enabledLayerCount( enabledLayerCount_ )
7227 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7228 , enabledExtensionCount( enabledExtensionCount_ )
7229 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7230 {
7231 }
7232
7233 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
7234 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007235 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007236 }
7237
7238 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
7239 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007240 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007241 return *this;
7242 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007243 InstanceCreateInfo& setPNext( const void* pNext_ )
7244 {
7245 pNext = pNext_;
7246 return *this;
7247 }
7248
7249 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
7250 {
7251 flags = flags_;
7252 return *this;
7253 }
7254
7255 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
7256 {
7257 pApplicationInfo = pApplicationInfo_;
7258 return *this;
7259 }
7260
7261 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7262 {
7263 enabledLayerCount = enabledLayerCount_;
7264 return *this;
7265 }
7266
7267 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7268 {
7269 ppEnabledLayerNames = ppEnabledLayerNames_;
7270 return *this;
7271 }
7272
7273 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7274 {
7275 enabledExtensionCount = enabledExtensionCount_;
7276 return *this;
7277 }
7278
7279 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7280 {
7281 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7282 return *this;
7283 }
7284
7285 operator const VkInstanceCreateInfo&() const
7286 {
7287 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
7288 }
7289
7290 bool operator==( InstanceCreateInfo const& rhs ) const
7291 {
7292 return ( sType == rhs.sType )
7293 && ( pNext == rhs.pNext )
7294 && ( flags == rhs.flags )
7295 && ( pApplicationInfo == rhs.pApplicationInfo )
7296 && ( enabledLayerCount == rhs.enabledLayerCount )
7297 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7298 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7299 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
7300 }
7301
7302 bool operator!=( InstanceCreateInfo const& rhs ) const
7303 {
7304 return !operator==( rhs );
7305 }
7306
7307 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007308 StructureType sType = StructureType::eInstanceCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007309
7310 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007311 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007312 InstanceCreateFlags flags;
7313 const ApplicationInfo* pApplicationInfo;
7314 uint32_t enabledLayerCount;
7315 const char* const* ppEnabledLayerNames;
7316 uint32_t enabledExtensionCount;
7317 const char* const* ppEnabledExtensionNames;
7318 };
7319 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
7320
7321 struct MemoryAllocateInfo
7322 {
7323 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007324 : allocationSize( allocationSize_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007325 , memoryTypeIndex( memoryTypeIndex_ )
7326 {
7327 }
7328
7329 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
7330 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007331 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007332 }
7333
7334 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
7335 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007336 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007337 return *this;
7338 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007339 MemoryAllocateInfo& setPNext( const void* pNext_ )
7340 {
7341 pNext = pNext_;
7342 return *this;
7343 }
7344
7345 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
7346 {
7347 allocationSize = allocationSize_;
7348 return *this;
7349 }
7350
7351 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
7352 {
7353 memoryTypeIndex = memoryTypeIndex_;
7354 return *this;
7355 }
7356
7357 operator const VkMemoryAllocateInfo&() const
7358 {
7359 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
7360 }
7361
7362 bool operator==( MemoryAllocateInfo const& rhs ) const
7363 {
7364 return ( sType == rhs.sType )
7365 && ( pNext == rhs.pNext )
7366 && ( allocationSize == rhs.allocationSize )
7367 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7368 }
7369
7370 bool operator!=( MemoryAllocateInfo const& rhs ) const
7371 {
7372 return !operator==( rhs );
7373 }
7374
7375 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007376 StructureType sType = StructureType::eMemoryAllocateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007377
7378 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007379 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007380 DeviceSize allocationSize;
7381 uint32_t memoryTypeIndex;
7382 };
7383 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7384
7385 struct MappedMemoryRange
7386 {
7387 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007388 : memory( memory_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007389 , offset( offset_ )
7390 , size( size_ )
7391 {
7392 }
7393
7394 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7395 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007396 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007397 }
7398
7399 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7400 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007401 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007402 return *this;
7403 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007404 MappedMemoryRange& setPNext( const void* pNext_ )
7405 {
7406 pNext = pNext_;
7407 return *this;
7408 }
7409
7410 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7411 {
7412 memory = memory_;
7413 return *this;
7414 }
7415
7416 MappedMemoryRange& setOffset( DeviceSize offset_ )
7417 {
7418 offset = offset_;
7419 return *this;
7420 }
7421
7422 MappedMemoryRange& setSize( DeviceSize size_ )
7423 {
7424 size = size_;
7425 return *this;
7426 }
7427
7428 operator const VkMappedMemoryRange&() const
7429 {
7430 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7431 }
7432
7433 bool operator==( MappedMemoryRange const& rhs ) const
7434 {
7435 return ( sType == rhs.sType )
7436 && ( pNext == rhs.pNext )
7437 && ( memory == rhs.memory )
7438 && ( offset == rhs.offset )
7439 && ( size == rhs.size );
7440 }
7441
7442 bool operator!=( MappedMemoryRange const& rhs ) const
7443 {
7444 return !operator==( rhs );
7445 }
7446
7447 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007448 StructureType sType = StructureType::eMappedMemoryRange;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007449
7450 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007451 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007452 DeviceMemory memory;
7453 DeviceSize offset;
7454 DeviceSize size;
7455 };
7456 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7457
7458 struct WriteDescriptorSet
7459 {
7460 WriteDescriptorSet( DescriptorSet dstSet_ = DescriptorSet(), uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, const DescriptorImageInfo* pImageInfo_ = nullptr, const DescriptorBufferInfo* pBufferInfo_ = nullptr, const BufferView* pTexelBufferView_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007461 : dstSet( dstSet_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007462 , dstBinding( dstBinding_ )
7463 , dstArrayElement( dstArrayElement_ )
7464 , descriptorCount( descriptorCount_ )
7465 , descriptorType( descriptorType_ )
7466 , pImageInfo( pImageInfo_ )
7467 , pBufferInfo( pBufferInfo_ )
7468 , pTexelBufferView( pTexelBufferView_ )
7469 {
7470 }
7471
7472 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7473 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007474 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007475 }
7476
7477 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7478 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007479 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007480 return *this;
7481 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007482 WriteDescriptorSet& setPNext( const void* pNext_ )
7483 {
7484 pNext = pNext_;
7485 return *this;
7486 }
7487
7488 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7489 {
7490 dstSet = dstSet_;
7491 return *this;
7492 }
7493
7494 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7495 {
7496 dstBinding = dstBinding_;
7497 return *this;
7498 }
7499
7500 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7501 {
7502 dstArrayElement = dstArrayElement_;
7503 return *this;
7504 }
7505
7506 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7507 {
7508 descriptorCount = descriptorCount_;
7509 return *this;
7510 }
7511
7512 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7513 {
7514 descriptorType = descriptorType_;
7515 return *this;
7516 }
7517
7518 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7519 {
7520 pImageInfo = pImageInfo_;
7521 return *this;
7522 }
7523
7524 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7525 {
7526 pBufferInfo = pBufferInfo_;
7527 return *this;
7528 }
7529
7530 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7531 {
7532 pTexelBufferView = pTexelBufferView_;
7533 return *this;
7534 }
7535
7536 operator const VkWriteDescriptorSet&() const
7537 {
7538 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7539 }
7540
7541 bool operator==( WriteDescriptorSet const& rhs ) const
7542 {
7543 return ( sType == rhs.sType )
7544 && ( pNext == rhs.pNext )
7545 && ( dstSet == rhs.dstSet )
7546 && ( dstBinding == rhs.dstBinding )
7547 && ( dstArrayElement == rhs.dstArrayElement )
7548 && ( descriptorCount == rhs.descriptorCount )
7549 && ( descriptorType == rhs.descriptorType )
7550 && ( pImageInfo == rhs.pImageInfo )
7551 && ( pBufferInfo == rhs.pBufferInfo )
7552 && ( pTexelBufferView == rhs.pTexelBufferView );
7553 }
7554
7555 bool operator!=( WriteDescriptorSet const& rhs ) const
7556 {
7557 return !operator==( rhs );
7558 }
7559
7560 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007561 StructureType sType = StructureType::eWriteDescriptorSet;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007562
7563 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007564 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007565 DescriptorSet dstSet;
7566 uint32_t dstBinding;
7567 uint32_t dstArrayElement;
7568 uint32_t descriptorCount;
7569 DescriptorType descriptorType;
7570 const DescriptorImageInfo* pImageInfo;
7571 const DescriptorBufferInfo* pBufferInfo;
7572 const BufferView* pTexelBufferView;
7573 };
7574 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7575
7576 struct CopyDescriptorSet
7577 {
7578 CopyDescriptorSet( DescriptorSet srcSet_ = DescriptorSet(), uint32_t srcBinding_ = 0, uint32_t srcArrayElement_ = 0, DescriptorSet dstSet_ = DescriptorSet(), uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007579 : srcSet( srcSet_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007580 , srcBinding( srcBinding_ )
7581 , srcArrayElement( srcArrayElement_ )
7582 , dstSet( dstSet_ )
7583 , dstBinding( dstBinding_ )
7584 , dstArrayElement( dstArrayElement_ )
7585 , descriptorCount( descriptorCount_ )
7586 {
7587 }
7588
7589 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007591 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007592 }
7593
7594 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007596 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007597 return *this;
7598 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007599 CopyDescriptorSet& setPNext( const void* pNext_ )
7600 {
7601 pNext = pNext_;
7602 return *this;
7603 }
7604
7605 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7606 {
7607 srcSet = srcSet_;
7608 return *this;
7609 }
7610
7611 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7612 {
7613 srcBinding = srcBinding_;
7614 return *this;
7615 }
7616
7617 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7618 {
7619 srcArrayElement = srcArrayElement_;
7620 return *this;
7621 }
7622
7623 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7624 {
7625 dstSet = dstSet_;
7626 return *this;
7627 }
7628
7629 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7630 {
7631 dstBinding = dstBinding_;
7632 return *this;
7633 }
7634
7635 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7636 {
7637 dstArrayElement = dstArrayElement_;
7638 return *this;
7639 }
7640
7641 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7642 {
7643 descriptorCount = descriptorCount_;
7644 return *this;
7645 }
7646
7647 operator const VkCopyDescriptorSet&() const
7648 {
7649 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7650 }
7651
7652 bool operator==( CopyDescriptorSet const& rhs ) const
7653 {
7654 return ( sType == rhs.sType )
7655 && ( pNext == rhs.pNext )
7656 && ( srcSet == rhs.srcSet )
7657 && ( srcBinding == rhs.srcBinding )
7658 && ( srcArrayElement == rhs.srcArrayElement )
7659 && ( dstSet == rhs.dstSet )
7660 && ( dstBinding == rhs.dstBinding )
7661 && ( dstArrayElement == rhs.dstArrayElement )
7662 && ( descriptorCount == rhs.descriptorCount );
7663 }
7664
7665 bool operator!=( CopyDescriptorSet const& rhs ) const
7666 {
7667 return !operator==( rhs );
7668 }
7669
7670 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007671 StructureType sType = StructureType::eCopyDescriptorSet;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007672
7673 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007674 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007675 DescriptorSet srcSet;
7676 uint32_t srcBinding;
7677 uint32_t srcArrayElement;
7678 DescriptorSet dstSet;
7679 uint32_t dstBinding;
7680 uint32_t dstArrayElement;
7681 uint32_t descriptorCount;
7682 };
7683 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7684
7685 struct BufferViewCreateInfo
7686 {
7687 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007688 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007689 , buffer( buffer_ )
7690 , format( format_ )
7691 , offset( offset_ )
7692 , range( range_ )
7693 {
7694 }
7695
7696 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7697 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007698 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007699 }
7700
7701 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7702 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007703 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007704 return *this;
7705 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007706 BufferViewCreateInfo& setPNext( const void* pNext_ )
7707 {
7708 pNext = pNext_;
7709 return *this;
7710 }
7711
7712 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7713 {
7714 flags = flags_;
7715 return *this;
7716 }
7717
7718 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7719 {
7720 buffer = buffer_;
7721 return *this;
7722 }
7723
7724 BufferViewCreateInfo& setFormat( Format format_ )
7725 {
7726 format = format_;
7727 return *this;
7728 }
7729
7730 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7731 {
7732 offset = offset_;
7733 return *this;
7734 }
7735
7736 BufferViewCreateInfo& setRange( DeviceSize range_ )
7737 {
7738 range = range_;
7739 return *this;
7740 }
7741
7742 operator const VkBufferViewCreateInfo&() const
7743 {
7744 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7745 }
7746
7747 bool operator==( BufferViewCreateInfo const& rhs ) const
7748 {
7749 return ( sType == rhs.sType )
7750 && ( pNext == rhs.pNext )
7751 && ( flags == rhs.flags )
7752 && ( buffer == rhs.buffer )
7753 && ( format == rhs.format )
7754 && ( offset == rhs.offset )
7755 && ( range == rhs.range );
7756 }
7757
7758 bool operator!=( BufferViewCreateInfo const& rhs ) const
7759 {
7760 return !operator==( rhs );
7761 }
7762
7763 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007764 StructureType sType = StructureType::eBufferViewCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007765
7766 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007767 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007768 BufferViewCreateFlags flags;
7769 Buffer buffer;
7770 Format format;
7771 DeviceSize offset;
7772 DeviceSize range;
7773 };
7774 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7775
7776 struct ShaderModuleCreateInfo
7777 {
7778 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007779 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007780 , codeSize( codeSize_ )
7781 , pCode( pCode_ )
7782 {
7783 }
7784
7785 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7786 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007787 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007788 }
7789
7790 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7791 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007792 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007793 return *this;
7794 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007795 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7796 {
7797 pNext = pNext_;
7798 return *this;
7799 }
7800
7801 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7802 {
7803 flags = flags_;
7804 return *this;
7805 }
7806
7807 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7808 {
7809 codeSize = codeSize_;
7810 return *this;
7811 }
7812
7813 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7814 {
7815 pCode = pCode_;
7816 return *this;
7817 }
7818
7819 operator const VkShaderModuleCreateInfo&() const
7820 {
7821 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7822 }
7823
7824 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7825 {
7826 return ( sType == rhs.sType )
7827 && ( pNext == rhs.pNext )
7828 && ( flags == rhs.flags )
7829 && ( codeSize == rhs.codeSize )
7830 && ( pCode == rhs.pCode );
7831 }
7832
7833 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7834 {
7835 return !operator==( rhs );
7836 }
7837
7838 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007839 StructureType sType = StructureType::eShaderModuleCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007840
7841 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007842 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007843 ShaderModuleCreateFlags flags;
7844 size_t codeSize;
7845 const uint32_t* pCode;
7846 };
7847 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7848
7849 struct DescriptorSetAllocateInfo
7850 {
7851 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007852 : descriptorPool( descriptorPool_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007853 , descriptorSetCount( descriptorSetCount_ )
7854 , pSetLayouts( pSetLayouts_ )
7855 {
7856 }
7857
7858 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7859 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007860 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007861 }
7862
7863 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007865 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007866 return *this;
7867 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007868 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7869 {
7870 pNext = pNext_;
7871 return *this;
7872 }
7873
7874 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7875 {
7876 descriptorPool = descriptorPool_;
7877 return *this;
7878 }
7879
7880 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7881 {
7882 descriptorSetCount = descriptorSetCount_;
7883 return *this;
7884 }
7885
7886 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7887 {
7888 pSetLayouts = pSetLayouts_;
7889 return *this;
7890 }
7891
7892 operator const VkDescriptorSetAllocateInfo&() const
7893 {
7894 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7895 }
7896
7897 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7898 {
7899 return ( sType == rhs.sType )
7900 && ( pNext == rhs.pNext )
7901 && ( descriptorPool == rhs.descriptorPool )
7902 && ( descriptorSetCount == rhs.descriptorSetCount )
7903 && ( pSetLayouts == rhs.pSetLayouts );
7904 }
7905
7906 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7907 {
7908 return !operator==( rhs );
7909 }
7910
7911 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007912 StructureType sType = StructureType::eDescriptorSetAllocateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007913
7914 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007915 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007916 DescriptorPool descriptorPool;
7917 uint32_t descriptorSetCount;
7918 const DescriptorSetLayout* pSetLayouts;
7919 };
7920 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7921
7922 struct PipelineVertexInputStateCreateInfo
7923 {
7924 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07007925 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007926 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7927 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7928 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7929 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7930 {
7931 }
7932
7933 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7934 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007935 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007936 }
7937
7938 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7939 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007940 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007941 return *this;
7942 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007943 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7944 {
7945 pNext = pNext_;
7946 return *this;
7947 }
7948
7949 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7950 {
7951 flags = flags_;
7952 return *this;
7953 }
7954
7955 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7956 {
7957 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7958 return *this;
7959 }
7960
7961 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7962 {
7963 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7964 return *this;
7965 }
7966
7967 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7968 {
7969 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7970 return *this;
7971 }
7972
7973 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7974 {
7975 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7976 return *this;
7977 }
7978
7979 operator const VkPipelineVertexInputStateCreateInfo&() const
7980 {
7981 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7982 }
7983
7984 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7985 {
7986 return ( sType == rhs.sType )
7987 && ( pNext == rhs.pNext )
7988 && ( flags == rhs.flags )
7989 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7990 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7991 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7992 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7993 }
7994
7995 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7996 {
7997 return !operator==( rhs );
7998 }
7999
8000 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008001 StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008002
8003 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008004 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008005 PipelineVertexInputStateCreateFlags flags;
8006 uint32_t vertexBindingDescriptionCount;
8007 const VertexInputBindingDescription* pVertexBindingDescriptions;
8008 uint32_t vertexAttributeDescriptionCount;
8009 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
8010 };
8011 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
8012
8013 struct PipelineInputAssemblyStateCreateInfo
8014 {
8015 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008016 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008017 , topology( topology_ )
8018 , primitiveRestartEnable( primitiveRestartEnable_ )
8019 {
8020 }
8021
8022 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8023 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008024 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008025 }
8026
8027 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8028 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008029 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008030 return *this;
8031 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008032 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
8033 {
8034 pNext = pNext_;
8035 return *this;
8036 }
8037
8038 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
8039 {
8040 flags = flags_;
8041 return *this;
8042 }
8043
8044 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
8045 {
8046 topology = topology_;
8047 return *this;
8048 }
8049
8050 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
8051 {
8052 primitiveRestartEnable = primitiveRestartEnable_;
8053 return *this;
8054 }
8055
8056 operator const VkPipelineInputAssemblyStateCreateInfo&() const
8057 {
8058 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
8059 }
8060
8061 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8062 {
8063 return ( sType == rhs.sType )
8064 && ( pNext == rhs.pNext )
8065 && ( flags == rhs.flags )
8066 && ( topology == rhs.topology )
8067 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
8068 }
8069
8070 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8071 {
8072 return !operator==( rhs );
8073 }
8074
8075 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008076 StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008077
8078 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008079 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008080 PipelineInputAssemblyStateCreateFlags flags;
8081 PrimitiveTopology topology;
8082 Bool32 primitiveRestartEnable;
8083 };
8084 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
8085
8086 struct PipelineTessellationStateCreateInfo
8087 {
8088 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008089 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008090 , patchControlPoints( patchControlPoints_ )
8091 {
8092 }
8093
8094 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
8095 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008096 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008097 }
8098
8099 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
8100 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008101 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008102 return *this;
8103 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008104 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
8105 {
8106 pNext = pNext_;
8107 return *this;
8108 }
8109
8110 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
8111 {
8112 flags = flags_;
8113 return *this;
8114 }
8115
8116 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
8117 {
8118 patchControlPoints = patchControlPoints_;
8119 return *this;
8120 }
8121
8122 operator const VkPipelineTessellationStateCreateInfo&() const
8123 {
8124 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
8125 }
8126
8127 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
8128 {
8129 return ( sType == rhs.sType )
8130 && ( pNext == rhs.pNext )
8131 && ( flags == rhs.flags )
8132 && ( patchControlPoints == rhs.patchControlPoints );
8133 }
8134
8135 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
8136 {
8137 return !operator==( rhs );
8138 }
8139
8140 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008141 StructureType sType = StructureType::ePipelineTessellationStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008142
8143 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008144 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008145 PipelineTessellationStateCreateFlags flags;
8146 uint32_t patchControlPoints;
8147 };
8148 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
8149
8150 struct PipelineViewportStateCreateInfo
8151 {
8152 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008153 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008154 , viewportCount( viewportCount_ )
8155 , pViewports( pViewports_ )
8156 , scissorCount( scissorCount_ )
8157 , pScissors( pScissors_ )
8158 {
8159 }
8160
8161 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
8162 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008163 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008164 }
8165
8166 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
8167 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008168 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008169 return *this;
8170 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008171 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
8172 {
8173 pNext = pNext_;
8174 return *this;
8175 }
8176
8177 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
8178 {
8179 flags = flags_;
8180 return *this;
8181 }
8182
8183 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
8184 {
8185 viewportCount = viewportCount_;
8186 return *this;
8187 }
8188
8189 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
8190 {
8191 pViewports = pViewports_;
8192 return *this;
8193 }
8194
8195 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
8196 {
8197 scissorCount = scissorCount_;
8198 return *this;
8199 }
8200
8201 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
8202 {
8203 pScissors = pScissors_;
8204 return *this;
8205 }
8206
8207 operator const VkPipelineViewportStateCreateInfo&() const
8208 {
8209 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
8210 }
8211
8212 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
8213 {
8214 return ( sType == rhs.sType )
8215 && ( pNext == rhs.pNext )
8216 && ( flags == rhs.flags )
8217 && ( viewportCount == rhs.viewportCount )
8218 && ( pViewports == rhs.pViewports )
8219 && ( scissorCount == rhs.scissorCount )
8220 && ( pScissors == rhs.pScissors );
8221 }
8222
8223 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
8224 {
8225 return !operator==( rhs );
8226 }
8227
8228 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008229 StructureType sType = StructureType::ePipelineViewportStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008230
8231 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008232 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008233 PipelineViewportStateCreateFlags flags;
8234 uint32_t viewportCount;
8235 const Viewport* pViewports;
8236 uint32_t scissorCount;
8237 const Rect2D* pScissors;
8238 };
8239 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
8240
8241 struct PipelineRasterizationStateCreateInfo
8242 {
8243 PipelineRasterizationStateCreateInfo( PipelineRasterizationStateCreateFlags flags_ = PipelineRasterizationStateCreateFlags(), Bool32 depthClampEnable_ = 0, Bool32 rasterizerDiscardEnable_ = 0, PolygonMode polygonMode_ = PolygonMode::eFill, CullModeFlags cullMode_ = CullModeFlags(), FrontFace frontFace_ = FrontFace::eCounterClockwise, Bool32 depthBiasEnable_ = 0, float depthBiasConstantFactor_ = 0, float depthBiasClamp_ = 0, float depthBiasSlopeFactor_ = 0, float lineWidth_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008244 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008245 , depthClampEnable( depthClampEnable_ )
8246 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
8247 , polygonMode( polygonMode_ )
8248 , cullMode( cullMode_ )
8249 , frontFace( frontFace_ )
8250 , depthBiasEnable( depthBiasEnable_ )
8251 , depthBiasConstantFactor( depthBiasConstantFactor_ )
8252 , depthBiasClamp( depthBiasClamp_ )
8253 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
8254 , lineWidth( lineWidth_ )
8255 {
8256 }
8257
8258 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
8259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008260 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008261 }
8262
8263 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
8264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008265 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008266 return *this;
8267 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008268 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
8269 {
8270 pNext = pNext_;
8271 return *this;
8272 }
8273
8274 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
8275 {
8276 flags = flags_;
8277 return *this;
8278 }
8279
8280 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
8281 {
8282 depthClampEnable = depthClampEnable_;
8283 return *this;
8284 }
8285
8286 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
8287 {
8288 rasterizerDiscardEnable = rasterizerDiscardEnable_;
8289 return *this;
8290 }
8291
8292 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
8293 {
8294 polygonMode = polygonMode_;
8295 return *this;
8296 }
8297
8298 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
8299 {
8300 cullMode = cullMode_;
8301 return *this;
8302 }
8303
8304 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
8305 {
8306 frontFace = frontFace_;
8307 return *this;
8308 }
8309
8310 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
8311 {
8312 depthBiasEnable = depthBiasEnable_;
8313 return *this;
8314 }
8315
8316 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
8317 {
8318 depthBiasConstantFactor = depthBiasConstantFactor_;
8319 return *this;
8320 }
8321
8322 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
8323 {
8324 depthBiasClamp = depthBiasClamp_;
8325 return *this;
8326 }
8327
8328 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
8329 {
8330 depthBiasSlopeFactor = depthBiasSlopeFactor_;
8331 return *this;
8332 }
8333
8334 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
8335 {
8336 lineWidth = lineWidth_;
8337 return *this;
8338 }
8339
8340 operator const VkPipelineRasterizationStateCreateInfo&() const
8341 {
8342 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8343 }
8344
8345 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8346 {
8347 return ( sType == rhs.sType )
8348 && ( pNext == rhs.pNext )
8349 && ( flags == rhs.flags )
8350 && ( depthClampEnable == rhs.depthClampEnable )
8351 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8352 && ( polygonMode == rhs.polygonMode )
8353 && ( cullMode == rhs.cullMode )
8354 && ( frontFace == rhs.frontFace )
8355 && ( depthBiasEnable == rhs.depthBiasEnable )
8356 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8357 && ( depthBiasClamp == rhs.depthBiasClamp )
8358 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8359 && ( lineWidth == rhs.lineWidth );
8360 }
8361
8362 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8363 {
8364 return !operator==( rhs );
8365 }
8366
8367 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008368 StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008369
8370 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008371 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008372 PipelineRasterizationStateCreateFlags flags;
8373 Bool32 depthClampEnable;
8374 Bool32 rasterizerDiscardEnable;
8375 PolygonMode polygonMode;
8376 CullModeFlags cullMode;
8377 FrontFace frontFace;
8378 Bool32 depthBiasEnable;
8379 float depthBiasConstantFactor;
8380 float depthBiasClamp;
8381 float depthBiasSlopeFactor;
8382 float lineWidth;
8383 };
8384 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8385
8386 struct PipelineDepthStencilStateCreateInfo
8387 {
8388 PipelineDepthStencilStateCreateInfo( PipelineDepthStencilStateCreateFlags flags_ = PipelineDepthStencilStateCreateFlags(), Bool32 depthTestEnable_ = 0, Bool32 depthWriteEnable_ = 0, CompareOp depthCompareOp_ = CompareOp::eNever, Bool32 depthBoundsTestEnable_ = 0, Bool32 stencilTestEnable_ = 0, StencilOpState front_ = StencilOpState(), StencilOpState back_ = StencilOpState(), float minDepthBounds_ = 0, float maxDepthBounds_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008389 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008390 , depthTestEnable( depthTestEnable_ )
8391 , depthWriteEnable( depthWriteEnable_ )
8392 , depthCompareOp( depthCompareOp_ )
8393 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8394 , stencilTestEnable( stencilTestEnable_ )
8395 , front( front_ )
8396 , back( back_ )
8397 , minDepthBounds( minDepthBounds_ )
8398 , maxDepthBounds( maxDepthBounds_ )
8399 {
8400 }
8401
8402 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8403 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008404 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008405 }
8406
8407 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8408 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008409 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008410 return *this;
8411 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008412 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8413 {
8414 pNext = pNext_;
8415 return *this;
8416 }
8417
8418 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8419 {
8420 flags = flags_;
8421 return *this;
8422 }
8423
8424 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8425 {
8426 depthTestEnable = depthTestEnable_;
8427 return *this;
8428 }
8429
8430 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8431 {
8432 depthWriteEnable = depthWriteEnable_;
8433 return *this;
8434 }
8435
8436 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8437 {
8438 depthCompareOp = depthCompareOp_;
8439 return *this;
8440 }
8441
8442 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8443 {
8444 depthBoundsTestEnable = depthBoundsTestEnable_;
8445 return *this;
8446 }
8447
8448 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8449 {
8450 stencilTestEnable = stencilTestEnable_;
8451 return *this;
8452 }
8453
8454 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8455 {
8456 front = front_;
8457 return *this;
8458 }
8459
8460 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8461 {
8462 back = back_;
8463 return *this;
8464 }
8465
8466 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8467 {
8468 minDepthBounds = minDepthBounds_;
8469 return *this;
8470 }
8471
8472 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8473 {
8474 maxDepthBounds = maxDepthBounds_;
8475 return *this;
8476 }
8477
8478 operator const VkPipelineDepthStencilStateCreateInfo&() const
8479 {
8480 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8481 }
8482
8483 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8484 {
8485 return ( sType == rhs.sType )
8486 && ( pNext == rhs.pNext )
8487 && ( flags == rhs.flags )
8488 && ( depthTestEnable == rhs.depthTestEnable )
8489 && ( depthWriteEnable == rhs.depthWriteEnable )
8490 && ( depthCompareOp == rhs.depthCompareOp )
8491 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8492 && ( stencilTestEnable == rhs.stencilTestEnable )
8493 && ( front == rhs.front )
8494 && ( back == rhs.back )
8495 && ( minDepthBounds == rhs.minDepthBounds )
8496 && ( maxDepthBounds == rhs.maxDepthBounds );
8497 }
8498
8499 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8500 {
8501 return !operator==( rhs );
8502 }
8503
8504 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008505 StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008506
8507 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008508 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008509 PipelineDepthStencilStateCreateFlags flags;
8510 Bool32 depthTestEnable;
8511 Bool32 depthWriteEnable;
8512 CompareOp depthCompareOp;
8513 Bool32 depthBoundsTestEnable;
8514 Bool32 stencilTestEnable;
8515 StencilOpState front;
8516 StencilOpState back;
8517 float minDepthBounds;
8518 float maxDepthBounds;
8519 };
8520 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8521
8522 struct PipelineCacheCreateInfo
8523 {
8524 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008525 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008526 , initialDataSize( initialDataSize_ )
8527 , pInitialData( pInitialData_ )
8528 {
8529 }
8530
8531 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8532 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008533 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008534 }
8535
8536 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8537 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008538 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008539 return *this;
8540 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008541 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8542 {
8543 pNext = pNext_;
8544 return *this;
8545 }
8546
8547 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8548 {
8549 flags = flags_;
8550 return *this;
8551 }
8552
8553 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8554 {
8555 initialDataSize = initialDataSize_;
8556 return *this;
8557 }
8558
8559 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8560 {
8561 pInitialData = pInitialData_;
8562 return *this;
8563 }
8564
8565 operator const VkPipelineCacheCreateInfo&() const
8566 {
8567 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8568 }
8569
8570 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8571 {
8572 return ( sType == rhs.sType )
8573 && ( pNext == rhs.pNext )
8574 && ( flags == rhs.flags )
8575 && ( initialDataSize == rhs.initialDataSize )
8576 && ( pInitialData == rhs.pInitialData );
8577 }
8578
8579 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8580 {
8581 return !operator==( rhs );
8582 }
8583
8584 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008585 StructureType sType = StructureType::ePipelineCacheCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008586
8587 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008588 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008589 PipelineCacheCreateFlags flags;
8590 size_t initialDataSize;
8591 const void* pInitialData;
8592 };
8593 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8594
8595 struct SamplerCreateInfo
8596 {
8597 SamplerCreateInfo( SamplerCreateFlags flags_ = SamplerCreateFlags(), Filter magFilter_ = Filter::eNearest, Filter minFilter_ = Filter::eNearest, SamplerMipmapMode mipmapMode_ = SamplerMipmapMode::eNearest, SamplerAddressMode addressModeU_ = SamplerAddressMode::eRepeat, SamplerAddressMode addressModeV_ = SamplerAddressMode::eRepeat, SamplerAddressMode addressModeW_ = SamplerAddressMode::eRepeat, float mipLodBias_ = 0, Bool32 anisotropyEnable_ = 0, float maxAnisotropy_ = 0, Bool32 compareEnable_ = 0, CompareOp compareOp_ = CompareOp::eNever, float minLod_ = 0, float maxLod_ = 0, BorderColor borderColor_ = BorderColor::eFloatTransparentBlack, Bool32 unnormalizedCoordinates_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008598 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008599 , magFilter( magFilter_ )
8600 , minFilter( minFilter_ )
8601 , mipmapMode( mipmapMode_ )
8602 , addressModeU( addressModeU_ )
8603 , addressModeV( addressModeV_ )
8604 , addressModeW( addressModeW_ )
8605 , mipLodBias( mipLodBias_ )
8606 , anisotropyEnable( anisotropyEnable_ )
8607 , maxAnisotropy( maxAnisotropy_ )
8608 , compareEnable( compareEnable_ )
8609 , compareOp( compareOp_ )
8610 , minLod( minLod_ )
8611 , maxLod( maxLod_ )
8612 , borderColor( borderColor_ )
8613 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8614 {
8615 }
8616
8617 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8618 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008619 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008620 }
8621
8622 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008624 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008625 return *this;
8626 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008627 SamplerCreateInfo& setPNext( const void* pNext_ )
8628 {
8629 pNext = pNext_;
8630 return *this;
8631 }
8632
8633 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8634 {
8635 flags = flags_;
8636 return *this;
8637 }
8638
8639 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8640 {
8641 magFilter = magFilter_;
8642 return *this;
8643 }
8644
8645 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8646 {
8647 minFilter = minFilter_;
8648 return *this;
8649 }
8650
8651 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8652 {
8653 mipmapMode = mipmapMode_;
8654 return *this;
8655 }
8656
8657 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8658 {
8659 addressModeU = addressModeU_;
8660 return *this;
8661 }
8662
8663 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8664 {
8665 addressModeV = addressModeV_;
8666 return *this;
8667 }
8668
8669 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8670 {
8671 addressModeW = addressModeW_;
8672 return *this;
8673 }
8674
8675 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8676 {
8677 mipLodBias = mipLodBias_;
8678 return *this;
8679 }
8680
8681 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8682 {
8683 anisotropyEnable = anisotropyEnable_;
8684 return *this;
8685 }
8686
8687 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8688 {
8689 maxAnisotropy = maxAnisotropy_;
8690 return *this;
8691 }
8692
8693 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8694 {
8695 compareEnable = compareEnable_;
8696 return *this;
8697 }
8698
8699 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8700 {
8701 compareOp = compareOp_;
8702 return *this;
8703 }
8704
8705 SamplerCreateInfo& setMinLod( float minLod_ )
8706 {
8707 minLod = minLod_;
8708 return *this;
8709 }
8710
8711 SamplerCreateInfo& setMaxLod( float maxLod_ )
8712 {
8713 maxLod = maxLod_;
8714 return *this;
8715 }
8716
8717 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8718 {
8719 borderColor = borderColor_;
8720 return *this;
8721 }
8722
8723 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8724 {
8725 unnormalizedCoordinates = unnormalizedCoordinates_;
8726 return *this;
8727 }
8728
8729 operator const VkSamplerCreateInfo&() const
8730 {
8731 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8732 }
8733
8734 bool operator==( SamplerCreateInfo const& rhs ) const
8735 {
8736 return ( sType == rhs.sType )
8737 && ( pNext == rhs.pNext )
8738 && ( flags == rhs.flags )
8739 && ( magFilter == rhs.magFilter )
8740 && ( minFilter == rhs.minFilter )
8741 && ( mipmapMode == rhs.mipmapMode )
8742 && ( addressModeU == rhs.addressModeU )
8743 && ( addressModeV == rhs.addressModeV )
8744 && ( addressModeW == rhs.addressModeW )
8745 && ( mipLodBias == rhs.mipLodBias )
8746 && ( anisotropyEnable == rhs.anisotropyEnable )
8747 && ( maxAnisotropy == rhs.maxAnisotropy )
8748 && ( compareEnable == rhs.compareEnable )
8749 && ( compareOp == rhs.compareOp )
8750 && ( minLod == rhs.minLod )
8751 && ( maxLod == rhs.maxLod )
8752 && ( borderColor == rhs.borderColor )
8753 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8754 }
8755
8756 bool operator!=( SamplerCreateInfo const& rhs ) const
8757 {
8758 return !operator==( rhs );
8759 }
8760
8761 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008762 StructureType sType = StructureType::eSamplerCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008763
8764 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008765 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008766 SamplerCreateFlags flags;
8767 Filter magFilter;
8768 Filter minFilter;
8769 SamplerMipmapMode mipmapMode;
8770 SamplerAddressMode addressModeU;
8771 SamplerAddressMode addressModeV;
8772 SamplerAddressMode addressModeW;
8773 float mipLodBias;
8774 Bool32 anisotropyEnable;
8775 float maxAnisotropy;
8776 Bool32 compareEnable;
8777 CompareOp compareOp;
8778 float minLod;
8779 float maxLod;
8780 BorderColor borderColor;
8781 Bool32 unnormalizedCoordinates;
8782 };
8783 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8784
8785 struct CommandBufferAllocateInfo
8786 {
8787 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008788 : commandPool( commandPool_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008789 , level( level_ )
8790 , commandBufferCount( commandBufferCount_ )
8791 {
8792 }
8793
8794 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8795 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008796 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008797 }
8798
8799 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8800 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008801 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008802 return *this;
8803 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008804 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8805 {
8806 pNext = pNext_;
8807 return *this;
8808 }
8809
8810 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8811 {
8812 commandPool = commandPool_;
8813 return *this;
8814 }
8815
8816 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8817 {
8818 level = level_;
8819 return *this;
8820 }
8821
8822 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8823 {
8824 commandBufferCount = commandBufferCount_;
8825 return *this;
8826 }
8827
8828 operator const VkCommandBufferAllocateInfo&() const
8829 {
8830 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8831 }
8832
8833 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8834 {
8835 return ( sType == rhs.sType )
8836 && ( pNext == rhs.pNext )
8837 && ( commandPool == rhs.commandPool )
8838 && ( level == rhs.level )
8839 && ( commandBufferCount == rhs.commandBufferCount );
8840 }
8841
8842 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8843 {
8844 return !operator==( rhs );
8845 }
8846
8847 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008848 StructureType sType = StructureType::eCommandBufferAllocateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008849
8850 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008851 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008852 CommandPool commandPool;
8853 CommandBufferLevel level;
8854 uint32_t commandBufferCount;
8855 };
8856 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8857
8858 struct RenderPassBeginInfo
8859 {
8860 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008861 : renderPass( renderPass_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008862 , framebuffer( framebuffer_ )
8863 , renderArea( renderArea_ )
8864 , clearValueCount( clearValueCount_ )
8865 , pClearValues( pClearValues_ )
8866 {
8867 }
8868
8869 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8870 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008871 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008872 }
8873
8874 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008876 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008877 return *this;
8878 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008879 RenderPassBeginInfo& setPNext( const void* pNext_ )
8880 {
8881 pNext = pNext_;
8882 return *this;
8883 }
8884
8885 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8886 {
8887 renderPass = renderPass_;
8888 return *this;
8889 }
8890
8891 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8892 {
8893 framebuffer = framebuffer_;
8894 return *this;
8895 }
8896
8897 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8898 {
8899 renderArea = renderArea_;
8900 return *this;
8901 }
8902
8903 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8904 {
8905 clearValueCount = clearValueCount_;
8906 return *this;
8907 }
8908
8909 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8910 {
8911 pClearValues = pClearValues_;
8912 return *this;
8913 }
8914
8915 operator const VkRenderPassBeginInfo&() const
8916 {
8917 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8918 }
8919
8920 bool operator==( RenderPassBeginInfo const& rhs ) const
8921 {
8922 return ( sType == rhs.sType )
8923 && ( pNext == rhs.pNext )
8924 && ( renderPass == rhs.renderPass )
8925 && ( framebuffer == rhs.framebuffer )
8926 && ( renderArea == rhs.renderArea )
8927 && ( clearValueCount == rhs.clearValueCount )
8928 && ( pClearValues == rhs.pClearValues );
8929 }
8930
8931 bool operator!=( RenderPassBeginInfo const& rhs ) const
8932 {
8933 return !operator==( rhs );
8934 }
8935
8936 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008937 StructureType sType = StructureType::eRenderPassBeginInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008938
8939 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008940 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008941 RenderPass renderPass;
8942 Framebuffer framebuffer;
8943 Rect2D renderArea;
8944 uint32_t clearValueCount;
8945 const ClearValue* pClearValues;
8946 };
8947 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8948
8949 struct EventCreateInfo
8950 {
8951 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008952 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008953 {
8954 }
8955
8956 EventCreateInfo( VkEventCreateInfo const & rhs )
8957 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008958 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008959 }
8960
8961 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8962 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008963 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008964 return *this;
8965 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008966 EventCreateInfo& setPNext( const void* pNext_ )
8967 {
8968 pNext = pNext_;
8969 return *this;
8970 }
8971
8972 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8973 {
8974 flags = flags_;
8975 return *this;
8976 }
8977
8978 operator const VkEventCreateInfo&() const
8979 {
8980 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8981 }
8982
8983 bool operator==( EventCreateInfo const& rhs ) const
8984 {
8985 return ( sType == rhs.sType )
8986 && ( pNext == rhs.pNext )
8987 && ( flags == rhs.flags );
8988 }
8989
8990 bool operator!=( EventCreateInfo const& rhs ) const
8991 {
8992 return !operator==( rhs );
8993 }
8994
8995 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008996 StructureType sType = StructureType::eEventCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008997
8998 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07008999 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009000 EventCreateFlags flags;
9001 };
9002 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
9003
9004 struct SemaphoreCreateInfo
9005 {
9006 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009007 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009008 {
9009 }
9010
9011 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
9012 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009013 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009014 }
9015
9016 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
9017 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009018 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009019 return *this;
9020 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009021 SemaphoreCreateInfo& setPNext( const void* pNext_ )
9022 {
9023 pNext = pNext_;
9024 return *this;
9025 }
9026
9027 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
9028 {
9029 flags = flags_;
9030 return *this;
9031 }
9032
9033 operator const VkSemaphoreCreateInfo&() const
9034 {
9035 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
9036 }
9037
9038 bool operator==( SemaphoreCreateInfo const& rhs ) const
9039 {
9040 return ( sType == rhs.sType )
9041 && ( pNext == rhs.pNext )
9042 && ( flags == rhs.flags );
9043 }
9044
9045 bool operator!=( SemaphoreCreateInfo const& rhs ) const
9046 {
9047 return !operator==( rhs );
9048 }
9049
9050 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009051 StructureType sType = StructureType::eSemaphoreCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009052
9053 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009054 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009055 SemaphoreCreateFlags flags;
9056 };
9057 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
9058
9059 struct FramebufferCreateInfo
9060 {
9061 FramebufferCreateInfo( FramebufferCreateFlags flags_ = FramebufferCreateFlags(), RenderPass renderPass_ = RenderPass(), uint32_t attachmentCount_ = 0, const ImageView* pAttachments_ = nullptr, uint32_t width_ = 0, uint32_t height_ = 0, uint32_t layers_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009062 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009063 , renderPass( renderPass_ )
9064 , attachmentCount( attachmentCount_ )
9065 , pAttachments( pAttachments_ )
9066 , width( width_ )
9067 , height( height_ )
9068 , layers( layers_ )
9069 {
9070 }
9071
9072 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
9073 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009074 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009075 }
9076
9077 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
9078 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009079 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009080 return *this;
9081 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009082 FramebufferCreateInfo& setPNext( const void* pNext_ )
9083 {
9084 pNext = pNext_;
9085 return *this;
9086 }
9087
9088 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
9089 {
9090 flags = flags_;
9091 return *this;
9092 }
9093
9094 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
9095 {
9096 renderPass = renderPass_;
9097 return *this;
9098 }
9099
9100 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
9101 {
9102 attachmentCount = attachmentCount_;
9103 return *this;
9104 }
9105
9106 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
9107 {
9108 pAttachments = pAttachments_;
9109 return *this;
9110 }
9111
9112 FramebufferCreateInfo& setWidth( uint32_t width_ )
9113 {
9114 width = width_;
9115 return *this;
9116 }
9117
9118 FramebufferCreateInfo& setHeight( uint32_t height_ )
9119 {
9120 height = height_;
9121 return *this;
9122 }
9123
9124 FramebufferCreateInfo& setLayers( uint32_t layers_ )
9125 {
9126 layers = layers_;
9127 return *this;
9128 }
9129
9130 operator const VkFramebufferCreateInfo&() const
9131 {
9132 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
9133 }
9134
9135 bool operator==( FramebufferCreateInfo const& rhs ) const
9136 {
9137 return ( sType == rhs.sType )
9138 && ( pNext == rhs.pNext )
9139 && ( flags == rhs.flags )
9140 && ( renderPass == rhs.renderPass )
9141 && ( attachmentCount == rhs.attachmentCount )
9142 && ( pAttachments == rhs.pAttachments )
9143 && ( width == rhs.width )
9144 && ( height == rhs.height )
9145 && ( layers == rhs.layers );
9146 }
9147
9148 bool operator!=( FramebufferCreateInfo const& rhs ) const
9149 {
9150 return !operator==( rhs );
9151 }
9152
9153 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009154 StructureType sType = StructureType::eFramebufferCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009155
9156 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009157 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009158 FramebufferCreateFlags flags;
9159 RenderPass renderPass;
9160 uint32_t attachmentCount;
9161 const ImageView* pAttachments;
9162 uint32_t width;
9163 uint32_t height;
9164 uint32_t layers;
9165 };
9166 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
9167
9168 struct DisplayModeCreateInfoKHR
9169 {
9170 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009171 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009172 , parameters( parameters_ )
9173 {
9174 }
9175
9176 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
9177 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009178 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009179 }
9180
9181 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
9182 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009183 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009184 return *this;
9185 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009186 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
9187 {
9188 pNext = pNext_;
9189 return *this;
9190 }
9191
9192 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
9193 {
9194 flags = flags_;
9195 return *this;
9196 }
9197
9198 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
9199 {
9200 parameters = parameters_;
9201 return *this;
9202 }
9203
9204 operator const VkDisplayModeCreateInfoKHR&() const
9205 {
9206 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
9207 }
9208
9209 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
9210 {
9211 return ( sType == rhs.sType )
9212 && ( pNext == rhs.pNext )
9213 && ( flags == rhs.flags )
9214 && ( parameters == rhs.parameters );
9215 }
9216
9217 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
9218 {
9219 return !operator==( rhs );
9220 }
9221
9222 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009223 StructureType sType = StructureType::eDisplayModeCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009224
9225 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009226 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009227 DisplayModeCreateFlagsKHR flags;
9228 DisplayModeParametersKHR parameters;
9229 };
9230 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
9231
9232 struct DisplayPresentInfoKHR
9233 {
9234 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009235 : srcRect( srcRect_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009236 , dstRect( dstRect_ )
9237 , persistent( persistent_ )
9238 {
9239 }
9240
9241 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
9242 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009243 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009244 }
9245
9246 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
9247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009248 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009249 return *this;
9250 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009251 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
9252 {
9253 pNext = pNext_;
9254 return *this;
9255 }
9256
9257 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
9258 {
9259 srcRect = srcRect_;
9260 return *this;
9261 }
9262
9263 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
9264 {
9265 dstRect = dstRect_;
9266 return *this;
9267 }
9268
9269 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
9270 {
9271 persistent = persistent_;
9272 return *this;
9273 }
9274
9275 operator const VkDisplayPresentInfoKHR&() const
9276 {
9277 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
9278 }
9279
9280 bool operator==( DisplayPresentInfoKHR const& rhs ) const
9281 {
9282 return ( sType == rhs.sType )
9283 && ( pNext == rhs.pNext )
9284 && ( srcRect == rhs.srcRect )
9285 && ( dstRect == rhs.dstRect )
9286 && ( persistent == rhs.persistent );
9287 }
9288
9289 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
9290 {
9291 return !operator==( rhs );
9292 }
9293
9294 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009295 StructureType sType = StructureType::eDisplayPresentInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009296
9297 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009298 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009299 Rect2D srcRect;
9300 Rect2D dstRect;
9301 Bool32 persistent;
9302 };
9303 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
9304
9305#ifdef VK_USE_PLATFORM_ANDROID_KHR
9306 struct AndroidSurfaceCreateInfoKHR
9307 {
9308 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009309 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009310 , window( window_ )
9311 {
9312 }
9313
9314 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
9315 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009316 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009317 }
9318
9319 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009321 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009322 return *this;
9323 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009324 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9325 {
9326 pNext = pNext_;
9327 return *this;
9328 }
9329
9330 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9331 {
9332 flags = flags_;
9333 return *this;
9334 }
9335
9336 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9337 {
9338 window = window_;
9339 return *this;
9340 }
9341
9342 operator const VkAndroidSurfaceCreateInfoKHR&() const
9343 {
9344 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9345 }
9346
9347 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9348 {
9349 return ( sType == rhs.sType )
9350 && ( pNext == rhs.pNext )
9351 && ( flags == rhs.flags )
9352 && ( window == rhs.window );
9353 }
9354
9355 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9356 {
9357 return !operator==( rhs );
9358 }
9359
9360 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009361 StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009362
9363 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009364 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009365 AndroidSurfaceCreateFlagsKHR flags;
9366 ANativeWindow* window;
9367 };
9368 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9369#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9370
9371#ifdef VK_USE_PLATFORM_MIR_KHR
9372 struct MirSurfaceCreateInfoKHR
9373 {
9374 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009375 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009376 , connection( connection_ )
9377 , mirSurface( mirSurface_ )
9378 {
9379 }
9380
9381 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9382 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009383 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009384 }
9385
9386 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9387 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009388 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009389 return *this;
9390 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009391 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9392 {
9393 pNext = pNext_;
9394 return *this;
9395 }
9396
9397 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9398 {
9399 flags = flags_;
9400 return *this;
9401 }
9402
9403 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9404 {
9405 connection = connection_;
9406 return *this;
9407 }
9408
9409 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9410 {
9411 mirSurface = mirSurface_;
9412 return *this;
9413 }
9414
9415 operator const VkMirSurfaceCreateInfoKHR&() const
9416 {
9417 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9418 }
9419
9420 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9421 {
9422 return ( sType == rhs.sType )
9423 && ( pNext == rhs.pNext )
9424 && ( flags == rhs.flags )
9425 && ( connection == rhs.connection )
9426 && ( mirSurface == rhs.mirSurface );
9427 }
9428
9429 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9430 {
9431 return !operator==( rhs );
9432 }
9433
9434 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009435 StructureType sType = StructureType::eMirSurfaceCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009436
9437 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009438 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009439 MirSurfaceCreateFlagsKHR flags;
9440 MirConnection* connection;
9441 MirSurface* mirSurface;
9442 };
9443 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9444#endif /*VK_USE_PLATFORM_MIR_KHR*/
9445
Mark Young39389872017-01-19 21:10:49 -07009446#ifdef VK_USE_PLATFORM_VI_NN
9447 struct ViSurfaceCreateInfoNN
9448 {
9449 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009450 : flags( flags_ )
Mark Young39389872017-01-19 21:10:49 -07009451 , window( window_ )
9452 {
9453 }
9454
9455 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9456 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009457 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009458 }
9459
9460 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9461 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009462 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009463 return *this;
9464 }
Mark Young39389872017-01-19 21:10:49 -07009465 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9466 {
9467 pNext = pNext_;
9468 return *this;
9469 }
9470
9471 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9472 {
9473 flags = flags_;
9474 return *this;
9475 }
9476
9477 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9478 {
9479 window = window_;
9480 return *this;
9481 }
9482
9483 operator const VkViSurfaceCreateInfoNN&() const
9484 {
9485 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9486 }
9487
9488 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9489 {
9490 return ( sType == rhs.sType )
9491 && ( pNext == rhs.pNext )
9492 && ( flags == rhs.flags )
9493 && ( window == rhs.window );
9494 }
9495
9496 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9497 {
9498 return !operator==( rhs );
9499 }
9500
9501 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009502 StructureType sType = StructureType::eViSurfaceCreateInfoNN;
Mark Young39389872017-01-19 21:10:49 -07009503
9504 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009505 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -07009506 ViSurfaceCreateFlagsNN flags;
9507 void* window;
9508 };
9509 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9510#endif /*VK_USE_PLATFORM_VI_NN*/
9511
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009512#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9513 struct WaylandSurfaceCreateInfoKHR
9514 {
9515 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009516 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009517 , display( display_ )
9518 , surface( surface_ )
9519 {
9520 }
9521
9522 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9523 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009524 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009525 }
9526
9527 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9528 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009529 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009530 return *this;
9531 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009532 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9533 {
9534 pNext = pNext_;
9535 return *this;
9536 }
9537
9538 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9539 {
9540 flags = flags_;
9541 return *this;
9542 }
9543
9544 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9545 {
9546 display = display_;
9547 return *this;
9548 }
9549
9550 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9551 {
9552 surface = surface_;
9553 return *this;
9554 }
9555
9556 operator const VkWaylandSurfaceCreateInfoKHR&() const
9557 {
9558 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9559 }
9560
9561 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9562 {
9563 return ( sType == rhs.sType )
9564 && ( pNext == rhs.pNext )
9565 && ( flags == rhs.flags )
9566 && ( display == rhs.display )
9567 && ( surface == rhs.surface );
9568 }
9569
9570 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9571 {
9572 return !operator==( rhs );
9573 }
9574
9575 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009576 StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009577
9578 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009579 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009580 WaylandSurfaceCreateFlagsKHR flags;
9581 struct wl_display* display;
9582 struct wl_surface* surface;
9583 };
9584 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9585#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9586
9587#ifdef VK_USE_PLATFORM_WIN32_KHR
9588 struct Win32SurfaceCreateInfoKHR
9589 {
9590 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009591 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009592 , hinstance( hinstance_ )
9593 , hwnd( hwnd_ )
9594 {
9595 }
9596
9597 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9598 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009599 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009600 }
9601
9602 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009604 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009605 return *this;
9606 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009607 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9608 {
9609 pNext = pNext_;
9610 return *this;
9611 }
9612
9613 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9614 {
9615 flags = flags_;
9616 return *this;
9617 }
9618
9619 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9620 {
9621 hinstance = hinstance_;
9622 return *this;
9623 }
9624
9625 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9626 {
9627 hwnd = hwnd_;
9628 return *this;
9629 }
9630
9631 operator const VkWin32SurfaceCreateInfoKHR&() const
9632 {
9633 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9634 }
9635
9636 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9637 {
9638 return ( sType == rhs.sType )
9639 && ( pNext == rhs.pNext )
9640 && ( flags == rhs.flags )
9641 && ( hinstance == rhs.hinstance )
9642 && ( hwnd == rhs.hwnd );
9643 }
9644
9645 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9646 {
9647 return !operator==( rhs );
9648 }
9649
9650 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009651 StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009652
9653 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009654 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009655 Win32SurfaceCreateFlagsKHR flags;
9656 HINSTANCE hinstance;
9657 HWND hwnd;
9658 };
9659 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9660#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9661
9662#ifdef VK_USE_PLATFORM_XLIB_KHR
9663 struct XlibSurfaceCreateInfoKHR
9664 {
9665 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009666 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009667 , dpy( dpy_ )
9668 , window( window_ )
9669 {
9670 }
9671
9672 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009674 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009675 }
9676
9677 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009679 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009680 return *this;
9681 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009682 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9683 {
9684 pNext = pNext_;
9685 return *this;
9686 }
9687
9688 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9689 {
9690 flags = flags_;
9691 return *this;
9692 }
9693
9694 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9695 {
9696 dpy = dpy_;
9697 return *this;
9698 }
9699
9700 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9701 {
9702 window = window_;
9703 return *this;
9704 }
9705
9706 operator const VkXlibSurfaceCreateInfoKHR&() const
9707 {
9708 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9709 }
9710
9711 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9712 {
9713 return ( sType == rhs.sType )
9714 && ( pNext == rhs.pNext )
9715 && ( flags == rhs.flags )
9716 && ( dpy == rhs.dpy )
9717 && ( window == rhs.window );
9718 }
9719
9720 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9721 {
9722 return !operator==( rhs );
9723 }
9724
9725 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009726 StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009727
9728 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009729 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009730 XlibSurfaceCreateFlagsKHR flags;
9731 Display* dpy;
9732 Window window;
9733 };
9734 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9735#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9736
9737#ifdef VK_USE_PLATFORM_XCB_KHR
9738 struct XcbSurfaceCreateInfoKHR
9739 {
9740 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009741 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009742 , connection( connection_ )
9743 , window( window_ )
9744 {
9745 }
9746
9747 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9748 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009749 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009750 }
9751
9752 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009754 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009755 return *this;
9756 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009757 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9758 {
9759 pNext = pNext_;
9760 return *this;
9761 }
9762
9763 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9764 {
9765 flags = flags_;
9766 return *this;
9767 }
9768
9769 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9770 {
9771 connection = connection_;
9772 return *this;
9773 }
9774
9775 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9776 {
9777 window = window_;
9778 return *this;
9779 }
9780
9781 operator const VkXcbSurfaceCreateInfoKHR&() const
9782 {
9783 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9784 }
9785
9786 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9787 {
9788 return ( sType == rhs.sType )
9789 && ( pNext == rhs.pNext )
9790 && ( flags == rhs.flags )
9791 && ( connection == rhs.connection )
9792 && ( window == rhs.window );
9793 }
9794
9795 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9796 {
9797 return !operator==( rhs );
9798 }
9799
9800 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009801 StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009802
9803 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009804 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009805 XcbSurfaceCreateFlagsKHR flags;
9806 xcb_connection_t* connection;
9807 xcb_window_t window;
9808 };
9809 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9810#endif /*VK_USE_PLATFORM_XCB_KHR*/
9811
9812 struct DebugMarkerMarkerInfoEXT
9813 {
9814 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009815 : pMarkerName( pMarkerName_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009816 {
9817 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9818 }
9819
9820 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9821 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009822 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009823 }
9824
9825 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9826 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009827 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009828 return *this;
9829 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009830 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9831 {
9832 pNext = pNext_;
9833 return *this;
9834 }
9835
9836 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9837 {
9838 pMarkerName = pMarkerName_;
9839 return *this;
9840 }
9841
9842 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9843 {
9844 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9845 return *this;
9846 }
9847
9848 operator const VkDebugMarkerMarkerInfoEXT&() const
9849 {
9850 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9851 }
9852
9853 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9854 {
9855 return ( sType == rhs.sType )
9856 && ( pNext == rhs.pNext )
9857 && ( pMarkerName == rhs.pMarkerName )
9858 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9859 }
9860
9861 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9862 {
9863 return !operator==( rhs );
9864 }
9865
9866 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009867 StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009868
9869 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009870 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009871 const char* pMarkerName;
9872 float color[4];
9873 };
9874 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9875
9876 struct DedicatedAllocationImageCreateInfoNV
9877 {
9878 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009879 : dedicatedAllocation( dedicatedAllocation_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009880 {
9881 }
9882
9883 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9884 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009885 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009886 }
9887
9888 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9889 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009890 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009891 return *this;
9892 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009893 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9894 {
9895 pNext = pNext_;
9896 return *this;
9897 }
9898
9899 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9900 {
9901 dedicatedAllocation = dedicatedAllocation_;
9902 return *this;
9903 }
9904
9905 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9906 {
9907 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9908 }
9909
9910 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9911 {
9912 return ( sType == rhs.sType )
9913 && ( pNext == rhs.pNext )
9914 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9915 }
9916
9917 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9918 {
9919 return !operator==( rhs );
9920 }
9921
9922 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009923 StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009924
9925 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009926 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009927 Bool32 dedicatedAllocation;
9928 };
9929 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9930
9931 struct DedicatedAllocationBufferCreateInfoNV
9932 {
9933 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009934 : dedicatedAllocation( dedicatedAllocation_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009935 {
9936 }
9937
9938 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9939 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009940 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009941 }
9942
9943 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9944 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009945 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009946 return *this;
9947 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009948 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9949 {
9950 pNext = pNext_;
9951 return *this;
9952 }
9953
9954 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9955 {
9956 dedicatedAllocation = dedicatedAllocation_;
9957 return *this;
9958 }
9959
9960 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9961 {
9962 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9963 }
9964
9965 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9966 {
9967 return ( sType == rhs.sType )
9968 && ( pNext == rhs.pNext )
9969 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9970 }
9971
9972 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9973 {
9974 return !operator==( rhs );
9975 }
9976
9977 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009978 StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009979
9980 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009981 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009982 Bool32 dedicatedAllocation;
9983 };
9984 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9985
9986 struct DedicatedAllocationMemoryAllocateInfoNV
9987 {
9988 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -07009989 : image( image_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009990 , buffer( buffer_ )
9991 {
9992 }
9993
9994 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9995 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009996 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009997 }
9998
9999 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10000 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010001 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010002 return *this;
10003 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010004 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
10005 {
10006 pNext = pNext_;
10007 return *this;
10008 }
10009
10010 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
10011 {
10012 image = image_;
10013 return *this;
10014 }
10015
10016 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
10017 {
10018 buffer = buffer_;
10019 return *this;
10020 }
10021
10022 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
10023 {
10024 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
10025 }
10026
10027 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10028 {
10029 return ( sType == rhs.sType )
10030 && ( pNext == rhs.pNext )
10031 && ( image == rhs.image )
10032 && ( buffer == rhs.buffer );
10033 }
10034
10035 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10036 {
10037 return !operator==( rhs );
10038 }
10039
10040 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010041 StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010042
10043 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010044 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010045 Image image;
10046 Buffer buffer;
10047 };
10048 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
10049
Lenny Komow6501c122016-08-31 15:03:49 -060010050#ifdef VK_USE_PLATFORM_WIN32_KHR
10051 struct ExportMemoryWin32HandleInfoNV
10052 {
10053 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010054 : pAttributes( pAttributes_ )
Lenny Komow6501c122016-08-31 15:03:49 -060010055 , dwAccess( dwAccess_ )
10056 {
10057 }
10058
10059 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
10060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010061 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010062 }
10063
10064 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
10065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010066 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010067 return *this;
10068 }
Lenny Komow6501c122016-08-31 15:03:49 -060010069 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
10070 {
10071 pNext = pNext_;
10072 return *this;
10073 }
10074
10075 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10076 {
10077 pAttributes = pAttributes_;
10078 return *this;
10079 }
10080
10081 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
10082 {
10083 dwAccess = dwAccess_;
10084 return *this;
10085 }
10086
10087 operator const VkExportMemoryWin32HandleInfoNV&() const
10088 {
10089 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
10090 }
10091
10092 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
10093 {
10094 return ( sType == rhs.sType )
10095 && ( pNext == rhs.pNext )
10096 && ( pAttributes == rhs.pAttributes )
10097 && ( dwAccess == rhs.dwAccess );
10098 }
10099
10100 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
10101 {
10102 return !operator==( rhs );
10103 }
10104
10105 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010106 StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV;
Lenny Komow6501c122016-08-31 15:03:49 -060010107
10108 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010109 const void* pNext = nullptr;
Lenny Komow6501c122016-08-31 15:03:49 -060010110 const SECURITY_ATTRIBUTES* pAttributes;
10111 DWORD dwAccess;
10112 };
10113 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
10114#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10115
10116#ifdef VK_USE_PLATFORM_WIN32_KHR
10117 struct Win32KeyedMutexAcquireReleaseInfoNV
10118 {
10119 Win32KeyedMutexAcquireReleaseInfoNV( uint32_t acquireCount_ = 0, const DeviceMemory* pAcquireSyncs_ = nullptr, const uint64_t* pAcquireKeys_ = nullptr, const uint32_t* pAcquireTimeoutMilliseconds_ = nullptr, uint32_t releaseCount_ = 0, const DeviceMemory* pReleaseSyncs_ = nullptr, const uint64_t* pReleaseKeys_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010120 : acquireCount( acquireCount_ )
Lenny Komow6501c122016-08-31 15:03:49 -060010121 , pAcquireSyncs( pAcquireSyncs_ )
10122 , pAcquireKeys( pAcquireKeys_ )
10123 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
10124 , releaseCount( releaseCount_ )
10125 , pReleaseSyncs( pReleaseSyncs_ )
10126 , pReleaseKeys( pReleaseKeys_ )
10127 {
10128 }
10129
10130 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010132 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010133 }
10134
10135 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10136 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010137 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010138 return *this;
10139 }
Lenny Komow6501c122016-08-31 15:03:49 -060010140 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
10141 {
10142 pNext = pNext_;
10143 return *this;
10144 }
10145
10146 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
10147 {
10148 acquireCount = acquireCount_;
10149 return *this;
10150 }
10151
10152 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10153 {
10154 pAcquireSyncs = pAcquireSyncs_;
10155 return *this;
10156 }
10157
10158 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10159 {
10160 pAcquireKeys = pAcquireKeys_;
10161 return *this;
10162 }
10163
10164 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
10165 {
10166 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
10167 return *this;
10168 }
10169
10170 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
10171 {
10172 releaseCount = releaseCount_;
10173 return *this;
10174 }
10175
10176 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10177 {
10178 pReleaseSyncs = pReleaseSyncs_;
10179 return *this;
10180 }
10181
10182 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10183 {
10184 pReleaseKeys = pReleaseKeys_;
10185 return *this;
10186 }
10187
10188 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
10189 {
10190 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
10191 }
10192
10193 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10194 {
10195 return ( sType == rhs.sType )
10196 && ( pNext == rhs.pNext )
10197 && ( acquireCount == rhs.acquireCount )
10198 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10199 && ( pAcquireKeys == rhs.pAcquireKeys )
10200 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
10201 && ( releaseCount == rhs.releaseCount )
10202 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10203 && ( pReleaseKeys == rhs.pReleaseKeys );
10204 }
10205
10206 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10207 {
10208 return !operator==( rhs );
10209 }
10210
10211 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010212 StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV;
Lenny Komow6501c122016-08-31 15:03:49 -060010213
10214 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010215 const void* pNext = nullptr;
Lenny Komow6501c122016-08-31 15:03:49 -060010216 uint32_t acquireCount;
10217 const DeviceMemory* pAcquireSyncs;
10218 const uint64_t* pAcquireKeys;
10219 const uint32_t* pAcquireTimeoutMilliseconds;
10220 uint32_t releaseCount;
10221 const DeviceMemory* pReleaseSyncs;
10222 const uint64_t* pReleaseKeys;
10223 };
10224 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
10225#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010227 struct DeviceGeneratedCommandsFeaturesNVX
10228 {
10229 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010230 : computeBindingPointSupport( computeBindingPointSupport_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010231 {
10232 }
10233
10234 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010236 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010237 }
10238
10239 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10240 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010241 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010242 return *this;
10243 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010244 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
10245 {
10246 pNext = pNext_;
10247 return *this;
10248 }
10249
10250 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
10251 {
10252 computeBindingPointSupport = computeBindingPointSupport_;
10253 return *this;
10254 }
10255
10256 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
10257 {
10258 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
10259 }
10260
10261 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10262 {
10263 return ( sType == rhs.sType )
10264 && ( pNext == rhs.pNext )
10265 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
10266 }
10267
10268 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10269 {
10270 return !operator==( rhs );
10271 }
10272
10273 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010274 StructureType sType = StructureType::eDeviceGeneratedCommandsFeaturesNVX;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010275
10276 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010277 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010278 Bool32 computeBindingPointSupport;
10279 };
10280 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
10281
10282 struct DeviceGeneratedCommandsLimitsNVX
10283 {
10284 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010285 : maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010286 , maxObjectEntryCounts( maxObjectEntryCounts_ )
10287 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
10288 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
10289 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
10290 {
10291 }
10292
10293 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010295 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010296 }
10297
10298 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10299 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010300 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010301 return *this;
10302 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010303 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10304 {
10305 pNext = pNext_;
10306 return *this;
10307 }
10308
10309 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10310 {
10311 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10312 return *this;
10313 }
10314
10315 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10316 {
10317 maxObjectEntryCounts = maxObjectEntryCounts_;
10318 return *this;
10319 }
10320
10321 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10322 {
10323 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10324 return *this;
10325 }
10326
10327 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10328 {
10329 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10330 return *this;
10331 }
10332
10333 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10334 {
10335 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10336 return *this;
10337 }
10338
10339 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10340 {
10341 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10342 }
10343
10344 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10345 {
10346 return ( sType == rhs.sType )
10347 && ( pNext == rhs.pNext )
10348 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10349 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10350 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10351 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10352 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10353 }
10354
10355 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10356 {
10357 return !operator==( rhs );
10358 }
10359
10360 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010361 StructureType sType = StructureType::eDeviceGeneratedCommandsLimitsNVX;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010362
10363 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010364 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010365 uint32_t maxIndirectCommandsLayoutTokenCount;
10366 uint32_t maxObjectEntryCounts;
10367 uint32_t minSequenceCountBufferOffsetAlignment;
10368 uint32_t minSequenceIndexBufferOffsetAlignment;
10369 uint32_t minCommandsTokenBufferOffsetAlignment;
10370 };
10371 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10372
10373 struct CmdReserveSpaceForCommandsInfoNVX
10374 {
10375 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010376 : objectTable( objectTable_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010377 , indirectCommandsLayout( indirectCommandsLayout_ )
10378 , maxSequencesCount( maxSequencesCount_ )
10379 {
10380 }
10381
10382 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10383 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010384 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010385 }
10386
10387 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10388 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010389 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010390 return *this;
10391 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010392 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10393 {
10394 pNext = pNext_;
10395 return *this;
10396 }
10397
10398 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10399 {
10400 objectTable = objectTable_;
10401 return *this;
10402 }
10403
10404 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10405 {
10406 indirectCommandsLayout = indirectCommandsLayout_;
10407 return *this;
10408 }
10409
10410 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10411 {
10412 maxSequencesCount = maxSequencesCount_;
10413 return *this;
10414 }
10415
10416 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10417 {
10418 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10419 }
10420
10421 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10422 {
10423 return ( sType == rhs.sType )
10424 && ( pNext == rhs.pNext )
10425 && ( objectTable == rhs.objectTable )
10426 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10427 && ( maxSequencesCount == rhs.maxSequencesCount );
10428 }
10429
10430 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10431 {
10432 return !operator==( rhs );
10433 }
10434
10435 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010436 StructureType sType = StructureType::eCmdReserveSpaceForCommandsInfoNVX;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010437
10438 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010439 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010440 ObjectTableNVX objectTable;
10441 IndirectCommandsLayoutNVX indirectCommandsLayout;
10442 uint32_t maxSequencesCount;
10443 };
10444 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10445
Mark Young39389872017-01-19 21:10:49 -070010446 struct PhysicalDeviceFeatures2KHR
10447 {
10448 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010449 : features( features_ )
Mark Young39389872017-01-19 21:10:49 -070010450 {
10451 }
10452
10453 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10454 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010455 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010456 }
10457
10458 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010460 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010461 return *this;
10462 }
Mark Young39389872017-01-19 21:10:49 -070010463 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10464 {
10465 pNext = pNext_;
10466 return *this;
10467 }
10468
10469 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10470 {
10471 features = features_;
10472 return *this;
10473 }
10474
10475 operator const VkPhysicalDeviceFeatures2KHR&() const
10476 {
10477 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10478 }
10479
10480 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10481 {
10482 return ( sType == rhs.sType )
10483 && ( pNext == rhs.pNext )
10484 && ( features == rhs.features );
10485 }
10486
10487 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10488 {
10489 return !operator==( rhs );
10490 }
10491
10492 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010493 StructureType sType = StructureType::ePhysicalDeviceFeatures2KHR;
Mark Young39389872017-01-19 21:10:49 -070010494
10495 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010496 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070010497 PhysicalDeviceFeatures features;
10498 };
10499 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10500
Mark Young0f183a82017-02-28 09:58:04 -070010501 struct PhysicalDevicePushDescriptorPropertiesKHR
10502 {
10503 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010504 : maxPushDescriptors( maxPushDescriptors_ )
Mark Young0f183a82017-02-28 09:58:04 -070010505 {
10506 }
10507
10508 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10509 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010510 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010511 }
10512
10513 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10514 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010515 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010516 return *this;
10517 }
Mark Young0f183a82017-02-28 09:58:04 -070010518 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10519 {
10520 pNext = pNext_;
10521 return *this;
10522 }
10523
10524 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10525 {
10526 maxPushDescriptors = maxPushDescriptors_;
10527 return *this;
10528 }
10529
10530 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10531 {
10532 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10533 }
10534
10535 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10536 {
10537 return ( sType == rhs.sType )
10538 && ( pNext == rhs.pNext )
10539 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10540 }
10541
10542 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10543 {
10544 return !operator==( rhs );
10545 }
10546
10547 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010548 StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR;
Mark Young0f183a82017-02-28 09:58:04 -070010549
10550 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010551 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070010552 uint32_t maxPushDescriptors;
10553 };
10554 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10555
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010556 struct PresentRegionsKHR
10557 {
10558 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010559 : swapchainCount( swapchainCount_ )
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010560 , pRegions( pRegions_ )
10561 {
10562 }
10563
10564 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10565 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010566 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010567 }
10568
10569 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10570 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010571 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010572 return *this;
10573 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010574 PresentRegionsKHR& setPNext( const void* pNext_ )
10575 {
10576 pNext = pNext_;
10577 return *this;
10578 }
10579
10580 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10581 {
10582 swapchainCount = swapchainCount_;
10583 return *this;
10584 }
10585
10586 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10587 {
10588 pRegions = pRegions_;
10589 return *this;
10590 }
10591
10592 operator const VkPresentRegionsKHR&() const
10593 {
10594 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10595 }
10596
10597 bool operator==( PresentRegionsKHR const& rhs ) const
10598 {
10599 return ( sType == rhs.sType )
10600 && ( pNext == rhs.pNext )
10601 && ( swapchainCount == rhs.swapchainCount )
10602 && ( pRegions == rhs.pRegions );
10603 }
10604
10605 bool operator!=( PresentRegionsKHR const& rhs ) const
10606 {
10607 return !operator==( rhs );
10608 }
10609
10610 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010611 StructureType sType = StructureType::ePresentRegionsKHR;
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010612
10613 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010614 const void* pNext = nullptr;
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010615 uint32_t swapchainCount;
10616 const PresentRegionKHR* pRegions;
10617 };
10618 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10619
Mark Youngabc2d6e2017-07-07 07:59:56 -060010620 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010621 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010622 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010623 : variablePointersStorageBuffer( variablePointersStorageBuffer_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010624 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010625 {
Mark Young0f183a82017-02-28 09:58:04 -070010626 }
10627
Mark Youngabc2d6e2017-07-07 07:59:56 -060010628 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10629 {
10630 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10631 }
10632
10633 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10634 {
10635 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10636 return *this;
10637 }
10638 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10639 {
10640 pNext = pNext_;
10641 return *this;
10642 }
10643
10644 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10645 {
10646 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10647 return *this;
10648 }
10649
10650 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10651 {
10652 variablePointers = variablePointers_;
10653 return *this;
10654 }
10655
10656 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10657 {
10658 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10659 }
10660
10661 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10662 {
10663 return ( sType == rhs.sType )
10664 && ( pNext == rhs.pNext )
10665 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10666 && ( variablePointers == rhs.variablePointers );
10667 }
10668
10669 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10670 {
10671 return !operator==( rhs );
10672 }
10673
10674 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010675 StructureType sType = StructureType::ePhysicalDeviceVariablePointerFeaturesKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060010676
10677 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010678 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060010679 Bool32 variablePointersStorageBuffer;
10680 Bool32 variablePointers;
10681 };
10682 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10683
10684 struct PhysicalDeviceIDPropertiesKHR
10685 {
10686 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10687 {
10688 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10689 }
10690
10691 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010692 {
10693 return ( sType == rhs.sType )
10694 && ( pNext == rhs.pNext )
10695 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10696 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010697 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10698 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010699 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10700 }
10701
Mark Youngabc2d6e2017-07-07 07:59:56 -060010702 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010703 {
10704 return !operator==( rhs );
10705 }
10706
10707 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010708 StructureType sType = StructureType::ePhysicalDeviceIdPropertiesKHR;
Mark Young0f183a82017-02-28 09:58:04 -070010709
10710 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010711 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070010712 uint8_t deviceUUID[VK_UUID_SIZE];
10713 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010714 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10715 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010716 Bool32 deviceLUIDValid;
10717 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010718 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010719
Mark Youngabc2d6e2017-07-07 07:59:56 -060010720#ifdef VK_USE_PLATFORM_WIN32_KHR
10721 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010722 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010723 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010724 : pAttributes( pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010725 , dwAccess( dwAccess_ )
10726 , name( name_ )
10727 {
10728 }
10729
Mark Youngabc2d6e2017-07-07 07:59:56 -060010730 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010731 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010732 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010733 }
10734
Mark Youngabc2d6e2017-07-07 07:59:56 -060010735 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010736 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010737 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010738 return *this;
10739 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010740 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010741 {
10742 pNext = pNext_;
10743 return *this;
10744 }
10745
Mark Youngabc2d6e2017-07-07 07:59:56 -060010746 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010747 {
10748 pAttributes = pAttributes_;
10749 return *this;
10750 }
10751
Mark Youngabc2d6e2017-07-07 07:59:56 -060010752 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010753 {
10754 dwAccess = dwAccess_;
10755 return *this;
10756 }
10757
Mark Youngabc2d6e2017-07-07 07:59:56 -060010758 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010759 {
10760 name = name_;
10761 return *this;
10762 }
10763
Mark Youngabc2d6e2017-07-07 07:59:56 -060010764 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010765 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010766 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010767 }
10768
Mark Youngabc2d6e2017-07-07 07:59:56 -060010769 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010770 {
10771 return ( sType == rhs.sType )
10772 && ( pNext == rhs.pNext )
10773 && ( pAttributes == rhs.pAttributes )
10774 && ( dwAccess == rhs.dwAccess )
10775 && ( name == rhs.name );
10776 }
10777
Mark Youngabc2d6e2017-07-07 07:59:56 -060010778 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010779 {
10780 return !operator==( rhs );
10781 }
10782
10783 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010784 StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070010785
10786 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010787 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070010788 const SECURITY_ATTRIBUTES* pAttributes;
10789 DWORD dwAccess;
10790 LPCWSTR name;
10791 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010792 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10793#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010794
10795#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010796 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010797 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010798 operator const VkMemoryWin32HandlePropertiesKHR&() const
10799 {
10800 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10801 }
10802
10803 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10804 {
10805 return ( sType == rhs.sType )
10806 && ( pNext == rhs.pNext )
10807 && ( memoryTypeBits == rhs.memoryTypeBits );
10808 }
10809
10810 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10811 {
10812 return !operator==( rhs );
10813 }
10814
10815 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010816 StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060010817
10818 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010819 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060010820 uint32_t memoryTypeBits;
10821 };
10822 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10823#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10824
10825 struct MemoryFdPropertiesKHR
10826 {
10827 operator const VkMemoryFdPropertiesKHR&() const
10828 {
10829 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10830 }
10831
10832 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10833 {
10834 return ( sType == rhs.sType )
10835 && ( pNext == rhs.pNext )
10836 && ( memoryTypeBits == rhs.memoryTypeBits );
10837 }
10838
10839 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10840 {
10841 return !operator==( rhs );
10842 }
10843
10844 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010845 StructureType sType = StructureType::eMemoryFdPropertiesKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060010846
10847 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010848 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060010849 uint32_t memoryTypeBits;
10850 };
10851 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10852
10853#ifdef VK_USE_PLATFORM_WIN32_KHR
10854 struct Win32KeyedMutexAcquireReleaseInfoKHR
10855 {
10856 Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0, const DeviceMemory* pAcquireSyncs_ = nullptr, const uint64_t* pAcquireKeys_ = nullptr, const uint32_t* pAcquireTimeouts_ = nullptr, uint32_t releaseCount_ = 0, const DeviceMemory* pReleaseSyncs_ = nullptr, const uint64_t* pReleaseKeys_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010857 : acquireCount( acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010858 , pAcquireSyncs( pAcquireSyncs_ )
10859 , pAcquireKeys( pAcquireKeys_ )
10860 , pAcquireTimeouts( pAcquireTimeouts_ )
10861 , releaseCount( releaseCount_ )
10862 , pReleaseSyncs( pReleaseSyncs_ )
10863 , pReleaseKeys( pReleaseKeys_ )
10864 {
10865 }
10866
Mark Youngabc2d6e2017-07-07 07:59:56 -060010867 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010868 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010869 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010870 }
10871
Mark Youngabc2d6e2017-07-07 07:59:56 -060010872 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010873 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010874 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010875 return *this;
10876 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010877 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010878 {
10879 pNext = pNext_;
10880 return *this;
10881 }
10882
Mark Youngabc2d6e2017-07-07 07:59:56 -060010883 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010884 {
10885 acquireCount = acquireCount_;
10886 return *this;
10887 }
10888
Mark Youngabc2d6e2017-07-07 07:59:56 -060010889 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010890 {
10891 pAcquireSyncs = pAcquireSyncs_;
10892 return *this;
10893 }
10894
Mark Youngabc2d6e2017-07-07 07:59:56 -060010895 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010896 {
10897 pAcquireKeys = pAcquireKeys_;
10898 return *this;
10899 }
10900
Mark Youngabc2d6e2017-07-07 07:59:56 -060010901 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010902 {
10903 pAcquireTimeouts = pAcquireTimeouts_;
10904 return *this;
10905 }
10906
Mark Youngabc2d6e2017-07-07 07:59:56 -060010907 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010908 {
10909 releaseCount = releaseCount_;
10910 return *this;
10911 }
10912
Mark Youngabc2d6e2017-07-07 07:59:56 -060010913 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010914 {
10915 pReleaseSyncs = pReleaseSyncs_;
10916 return *this;
10917 }
10918
Mark Youngabc2d6e2017-07-07 07:59:56 -060010919 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010920 {
10921 pReleaseKeys = pReleaseKeys_;
10922 return *this;
10923 }
10924
Mark Youngabc2d6e2017-07-07 07:59:56 -060010925 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010926 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010927 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010928 }
10929
Mark Youngabc2d6e2017-07-07 07:59:56 -060010930 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010931 {
10932 return ( sType == rhs.sType )
10933 && ( pNext == rhs.pNext )
10934 && ( acquireCount == rhs.acquireCount )
10935 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10936 && ( pAcquireKeys == rhs.pAcquireKeys )
10937 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10938 && ( releaseCount == rhs.releaseCount )
10939 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10940 && ( pReleaseKeys == rhs.pReleaseKeys );
10941 }
10942
Mark Youngabc2d6e2017-07-07 07:59:56 -060010943 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010944 {
10945 return !operator==( rhs );
10946 }
10947
10948 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010949 StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070010950
10951 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010952 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070010953 uint32_t acquireCount;
10954 const DeviceMemory* pAcquireSyncs;
10955 const uint64_t* pAcquireKeys;
10956 const uint32_t* pAcquireTimeouts;
10957 uint32_t releaseCount;
10958 const DeviceMemory* pReleaseSyncs;
10959 const uint64_t* pReleaseKeys;
10960 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010961 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010962#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10963
Mark Youngabc2d6e2017-07-07 07:59:56 -060010964#ifdef VK_USE_PLATFORM_WIN32_KHR
10965 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010966 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010967 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070010968 : pAttributes( pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010969 , dwAccess( dwAccess_ )
10970 , name( name_ )
10971 {
10972 }
10973
Mark Youngabc2d6e2017-07-07 07:59:56 -060010974 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010975 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010976 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010977 }
10978
Mark Youngabc2d6e2017-07-07 07:59:56 -060010979 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010980 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010981 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010982 return *this;
10983 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010984 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010985 {
10986 pNext = pNext_;
10987 return *this;
10988 }
10989
Mark Youngabc2d6e2017-07-07 07:59:56 -060010990 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010991 {
10992 pAttributes = pAttributes_;
10993 return *this;
10994 }
10995
Mark Youngabc2d6e2017-07-07 07:59:56 -060010996 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010997 {
10998 dwAccess = dwAccess_;
10999 return *this;
11000 }
11001
Mark Youngabc2d6e2017-07-07 07:59:56 -060011002 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070011003 {
11004 name = name_;
11005 return *this;
11006 }
11007
Mark Youngabc2d6e2017-07-07 07:59:56 -060011008 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011009 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011010 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011011 }
11012
Mark Youngabc2d6e2017-07-07 07:59:56 -060011013 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011014 {
11015 return ( sType == rhs.sType )
11016 && ( pNext == rhs.pNext )
11017 && ( pAttributes == rhs.pAttributes )
11018 && ( dwAccess == rhs.dwAccess )
11019 && ( name == rhs.name );
11020 }
11021
Mark Youngabc2d6e2017-07-07 07:59:56 -060011022 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011023 {
11024 return !operator==( rhs );
11025 }
11026
11027 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011028 StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070011029
11030 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011031 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011032 const SECURITY_ATTRIBUTES* pAttributes;
11033 DWORD dwAccess;
11034 LPCWSTR name;
11035 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011036 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11037#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011038
Mark Youngabc2d6e2017-07-07 07:59:56 -060011039#ifdef VK_USE_PLATFORM_WIN32_KHR
11040 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011041 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011042 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011043 : waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011044 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
11045 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
11046 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
11047 {
11048 }
11049
Mark Youngabc2d6e2017-07-07 07:59:56 -060011050 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011051 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011052 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011053 }
11054
Mark Youngabc2d6e2017-07-07 07:59:56 -060011055 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011056 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011057 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011058 return *this;
11059 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011060 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011061 {
11062 pNext = pNext_;
11063 return *this;
11064 }
11065
Mark Youngabc2d6e2017-07-07 07:59:56 -060011066 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011067 {
11068 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
11069 return *this;
11070 }
11071
Mark Youngabc2d6e2017-07-07 07:59:56 -060011072 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011073 {
11074 pWaitSemaphoreValues = pWaitSemaphoreValues_;
11075 return *this;
11076 }
11077
Mark Youngabc2d6e2017-07-07 07:59:56 -060011078 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011079 {
11080 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
11081 return *this;
11082 }
11083
Mark Youngabc2d6e2017-07-07 07:59:56 -060011084 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011085 {
11086 pSignalSemaphoreValues = pSignalSemaphoreValues_;
11087 return *this;
11088 }
11089
Mark Youngabc2d6e2017-07-07 07:59:56 -060011090 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011091 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011092 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011093 }
11094
Mark Youngabc2d6e2017-07-07 07:59:56 -060011095 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011096 {
11097 return ( sType == rhs.sType )
11098 && ( pNext == rhs.pNext )
11099 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
11100 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
11101 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
11102 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
11103 }
11104
Mark Youngabc2d6e2017-07-07 07:59:56 -060011105 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011106 {
11107 return !operator==( rhs );
11108 }
11109
11110 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011111 StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070011112
11113 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011114 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011115 uint32_t waitSemaphoreValuesCount;
11116 const uint64_t* pWaitSemaphoreValues;
11117 uint32_t signalSemaphoreValuesCount;
11118 const uint64_t* pSignalSemaphoreValues;
11119 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011120 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
11121#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11122
11123#ifdef VK_USE_PLATFORM_WIN32_KHR
11124 struct ExportFenceWin32HandleInfoKHR
11125 {
11126 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011127 : pAttributes( pAttributes_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060011128 , dwAccess( dwAccess_ )
11129 , name( name_ )
11130 {
11131 }
11132
11133 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
11134 {
11135 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11136 }
11137
11138 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
11139 {
11140 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11141 return *this;
11142 }
11143 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
11144 {
11145 pNext = pNext_;
11146 return *this;
11147 }
11148
11149 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11150 {
11151 pAttributes = pAttributes_;
11152 return *this;
11153 }
11154
11155 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
11156 {
11157 dwAccess = dwAccess_;
11158 return *this;
11159 }
11160
11161 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
11162 {
11163 name = name_;
11164 return *this;
11165 }
11166
11167 operator const VkExportFenceWin32HandleInfoKHR&() const
11168 {
11169 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
11170 }
11171
11172 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
11173 {
11174 return ( sType == rhs.sType )
11175 && ( pNext == rhs.pNext )
11176 && ( pAttributes == rhs.pAttributes )
11177 && ( dwAccess == rhs.dwAccess )
11178 && ( name == rhs.name );
11179 }
11180
11181 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
11182 {
11183 return !operator==( rhs );
11184 }
11185
11186 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011187 StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060011188
11189 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011190 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060011191 const SECURITY_ATTRIBUTES* pAttributes;
11192 DWORD dwAccess;
11193 LPCWSTR name;
11194 };
11195 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11196#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011197
11198 struct PhysicalDeviceMultiviewFeaturesKHX
11199 {
11200 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011201 : multiview( multiview_ )
Mark Young0f183a82017-02-28 09:58:04 -070011202 , multiviewGeometryShader( multiviewGeometryShader_ )
11203 , multiviewTessellationShader( multiviewTessellationShader_ )
11204 {
11205 }
11206
11207 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011209 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011210 }
11211
11212 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11213 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011214 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011215 return *this;
11216 }
Mark Young0f183a82017-02-28 09:58:04 -070011217 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
11218 {
11219 pNext = pNext_;
11220 return *this;
11221 }
11222
11223 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
11224 {
11225 multiview = multiview_;
11226 return *this;
11227 }
11228
11229 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
11230 {
11231 multiviewGeometryShader = multiviewGeometryShader_;
11232 return *this;
11233 }
11234
11235 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
11236 {
11237 multiviewTessellationShader = multiviewTessellationShader_;
11238 return *this;
11239 }
11240
11241 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
11242 {
11243 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
11244 }
11245
11246 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11247 {
11248 return ( sType == rhs.sType )
11249 && ( pNext == rhs.pNext )
11250 && ( multiview == rhs.multiview )
11251 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
11252 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
11253 }
11254
11255 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11256 {
11257 return !operator==( rhs );
11258 }
11259
11260 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011261 StructureType sType = StructureType::ePhysicalDeviceMultiviewFeaturesKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011262
11263 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011264 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011265 Bool32 multiview;
11266 Bool32 multiviewGeometryShader;
11267 Bool32 multiviewTessellationShader;
11268 };
11269 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11270
11271 struct PhysicalDeviceMultiviewPropertiesKHX
11272 {
11273 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11274 {
11275 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11276 }
11277
11278 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11279 {
11280 return ( sType == rhs.sType )
11281 && ( pNext == rhs.pNext )
11282 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11283 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11284 }
11285
11286 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11287 {
11288 return !operator==( rhs );
11289 }
11290
11291 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011292 StructureType sType = StructureType::ePhysicalDeviceMultiviewPropertiesKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011293
11294 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011295 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011296 uint32_t maxMultiviewViewCount;
11297 uint32_t maxMultiviewInstanceIndex;
11298 };
11299 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11300
11301 struct RenderPassMultiviewCreateInfoKHX
11302 {
11303 RenderPassMultiviewCreateInfoKHX( uint32_t subpassCount_ = 0, const uint32_t* pViewMasks_ = nullptr, uint32_t dependencyCount_ = 0, const int32_t* pViewOffsets_ = nullptr, uint32_t correlationMaskCount_ = 0, const uint32_t* pCorrelationMasks_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011304 : subpassCount( subpassCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011305 , pViewMasks( pViewMasks_ )
11306 , dependencyCount( dependencyCount_ )
11307 , pViewOffsets( pViewOffsets_ )
11308 , correlationMaskCount( correlationMaskCount_ )
11309 , pCorrelationMasks( pCorrelationMasks_ )
11310 {
11311 }
11312
11313 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11314 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011315 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011316 }
11317
11318 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011320 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011321 return *this;
11322 }
Mark Young0f183a82017-02-28 09:58:04 -070011323 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11324 {
11325 pNext = pNext_;
11326 return *this;
11327 }
11328
11329 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11330 {
11331 subpassCount = subpassCount_;
11332 return *this;
11333 }
11334
11335 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11336 {
11337 pViewMasks = pViewMasks_;
11338 return *this;
11339 }
11340
11341 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11342 {
11343 dependencyCount = dependencyCount_;
11344 return *this;
11345 }
11346
11347 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11348 {
11349 pViewOffsets = pViewOffsets_;
11350 return *this;
11351 }
11352
11353 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11354 {
11355 correlationMaskCount = correlationMaskCount_;
11356 return *this;
11357 }
11358
11359 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11360 {
11361 pCorrelationMasks = pCorrelationMasks_;
11362 return *this;
11363 }
11364
11365 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11366 {
11367 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11368 }
11369
11370 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11371 {
11372 return ( sType == rhs.sType )
11373 && ( pNext == rhs.pNext )
11374 && ( subpassCount == rhs.subpassCount )
11375 && ( pViewMasks == rhs.pViewMasks )
11376 && ( dependencyCount == rhs.dependencyCount )
11377 && ( pViewOffsets == rhs.pViewOffsets )
11378 && ( correlationMaskCount == rhs.correlationMaskCount )
11379 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11380 }
11381
11382 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11383 {
11384 return !operator==( rhs );
11385 }
11386
11387 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011388 StructureType sType = StructureType::eRenderPassMultiviewCreateInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011389
11390 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011391 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011392 uint32_t subpassCount;
11393 const uint32_t* pViewMasks;
11394 uint32_t dependencyCount;
11395 const int32_t* pViewOffsets;
11396 uint32_t correlationMaskCount;
11397 const uint32_t* pCorrelationMasks;
11398 };
11399 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11400
Lenny Komowb79f04a2017-09-18 17:07:00 -060011401 struct BindBufferMemoryInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011402 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011403 BindBufferMemoryInfoKHR( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011404 : buffer( buffer_ )
Mark Young0f183a82017-02-28 09:58:04 -070011405 , memory( memory_ )
11406 , memoryOffset( memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011407 {
11408 }
11409
Lenny Komowb79f04a2017-09-18 17:07:00 -060011410 BindBufferMemoryInfoKHR( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011411 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011412 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011413 }
11414
Lenny Komowb79f04a2017-09-18 17:07:00 -060011415 BindBufferMemoryInfoKHR& operator=( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011416 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011417 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011418 return *this;
11419 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011420 BindBufferMemoryInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011421 {
11422 pNext = pNext_;
11423 return *this;
11424 }
11425
Lenny Komowb79f04a2017-09-18 17:07:00 -060011426 BindBufferMemoryInfoKHR& setBuffer( Buffer buffer_ )
Mark Young0f183a82017-02-28 09:58:04 -070011427 {
11428 buffer = buffer_;
11429 return *this;
11430 }
11431
Lenny Komowb79f04a2017-09-18 17:07:00 -060011432 BindBufferMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011433 {
11434 memory = memory_;
11435 return *this;
11436 }
11437
Lenny Komowb79f04a2017-09-18 17:07:00 -060011438 BindBufferMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011439 {
11440 memoryOffset = memoryOffset_;
11441 return *this;
11442 }
11443
Lenny Komowb79f04a2017-09-18 17:07:00 -060011444 operator const VkBindBufferMemoryInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011445 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011446 return *reinterpret_cast<const VkBindBufferMemoryInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011447 }
11448
Lenny Komowb79f04a2017-09-18 17:07:00 -060011449 bool operator==( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011450 {
11451 return ( sType == rhs.sType )
11452 && ( pNext == rhs.pNext )
11453 && ( buffer == rhs.buffer )
11454 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011455 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011456 }
11457
Lenny Komowb79f04a2017-09-18 17:07:00 -060011458 bool operator!=( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011459 {
11460 return !operator==( rhs );
11461 }
11462
11463 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011464 StructureType sType = StructureType::eBindBufferMemoryInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070011465
11466 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011467 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011468 Buffer buffer;
11469 DeviceMemory memory;
11470 DeviceSize memoryOffset;
Mark Young0f183a82017-02-28 09:58:04 -070011471 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011472 static_assert( sizeof( BindBufferMemoryInfoKHR ) == sizeof( VkBindBufferMemoryInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011473
Lenny Komowb79f04a2017-09-18 17:07:00 -060011474 struct BindBufferMemoryDeviceGroupInfoKHX
Mark Young0f183a82017-02-28 09:58:04 -070011475 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011476 BindBufferMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011477 : deviceIndexCount( deviceIndexCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011478 , pDeviceIndices( pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011479 {
11480 }
11481
Lenny Komowb79f04a2017-09-18 17:07:00 -060011482 BindBufferMemoryDeviceGroupInfoKHX( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011483 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011484 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011485 }
11486
Lenny Komowb79f04a2017-09-18 17:07:00 -060011487 BindBufferMemoryDeviceGroupInfoKHX& operator=( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011488 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011489 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011490 return *this;
11491 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011492 BindBufferMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011493 {
11494 pNext = pNext_;
11495 return *this;
11496 }
11497
Lenny Komowb79f04a2017-09-18 17:07:00 -060011498 BindBufferMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011499 {
11500 deviceIndexCount = deviceIndexCount_;
11501 return *this;
11502 }
11503
Lenny Komowb79f04a2017-09-18 17:07:00 -060011504 BindBufferMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011505 {
11506 pDeviceIndices = pDeviceIndices_;
11507 return *this;
11508 }
11509
Lenny Komowb79f04a2017-09-18 17:07:00 -060011510 operator const VkBindBufferMemoryDeviceGroupInfoKHX&() const
Mark Young0f183a82017-02-28 09:58:04 -070011511 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011512 return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfoKHX*>(this);
11513 }
11514
11515 bool operator==( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11516 {
11517 return ( sType == rhs.sType )
11518 && ( pNext == rhs.pNext )
11519 && ( deviceIndexCount == rhs.deviceIndexCount )
11520 && ( pDeviceIndices == rhs.pDeviceIndices );
11521 }
11522
11523 bool operator!=( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11524 {
11525 return !operator==( rhs );
11526 }
11527
11528 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011529 StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfoKHX;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011530
11531 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011532 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011533 uint32_t deviceIndexCount;
11534 const uint32_t* pDeviceIndices;
11535 };
11536 static_assert( sizeof( BindBufferMemoryDeviceGroupInfoKHX ) == sizeof( VkBindBufferMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
11537
11538 struct BindImageMemoryInfoKHR
11539 {
11540 BindImageMemoryInfoKHR( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011541 : image( image_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011542 , memory( memory_ )
11543 , memoryOffset( memoryOffset_ )
11544 {
11545 }
11546
11547 BindImageMemoryInfoKHR( VkBindImageMemoryInfoKHR const & rhs )
11548 {
11549 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11550 }
11551
11552 BindImageMemoryInfoKHR& operator=( VkBindImageMemoryInfoKHR const & rhs )
11553 {
11554 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11555 return *this;
11556 }
11557 BindImageMemoryInfoKHR& setPNext( const void* pNext_ )
11558 {
11559 pNext = pNext_;
Mark Young0f183a82017-02-28 09:58:04 -070011560 return *this;
11561 }
11562
Lenny Komowb79f04a2017-09-18 17:07:00 -060011563 BindImageMemoryInfoKHR& setImage( Image image_ )
Mark Young0f183a82017-02-28 09:58:04 -070011564 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011565 image = image_;
Mark Young0f183a82017-02-28 09:58:04 -070011566 return *this;
11567 }
11568
Lenny Komowb79f04a2017-09-18 17:07:00 -060011569 BindImageMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011570 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011571 memory = memory_;
11572 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070011573 }
11574
Lenny Komowb79f04a2017-09-18 17:07:00 -060011575 BindImageMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
11576 {
11577 memoryOffset = memoryOffset_;
11578 return *this;
11579 }
11580
11581 operator const VkBindImageMemoryInfoKHR&() const
11582 {
11583 return *reinterpret_cast<const VkBindImageMemoryInfoKHR*>(this);
11584 }
11585
11586 bool operator==( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011587 {
11588 return ( sType == rhs.sType )
11589 && ( pNext == rhs.pNext )
11590 && ( image == rhs.image )
11591 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011592 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011593 }
11594
Lenny Komowb79f04a2017-09-18 17:07:00 -060011595 bool operator!=( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011596 {
11597 return !operator==( rhs );
11598 }
11599
11600 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011601 StructureType sType = StructureType::eBindImageMemoryInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070011602
11603 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011604 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011605 Image image;
11606 DeviceMemory memory;
11607 DeviceSize memoryOffset;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011608 };
11609 static_assert( sizeof( BindImageMemoryInfoKHR ) == sizeof( VkBindImageMemoryInfoKHR ), "struct and wrapper have different size!" );
11610
11611 struct BindImageMemoryDeviceGroupInfoKHX
11612 {
11613 BindImageMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011614 : deviceIndexCount( deviceIndexCount_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011615 , pDeviceIndices( pDeviceIndices_ )
11616 , SFRRectCount( SFRRectCount_ )
11617 , pSFRRects( pSFRRects_ )
11618 {
11619 }
11620
11621 BindImageMemoryDeviceGroupInfoKHX( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11622 {
11623 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11624 }
11625
11626 BindImageMemoryDeviceGroupInfoKHX& operator=( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11627 {
11628 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11629 return *this;
11630 }
11631 BindImageMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
11632 {
11633 pNext = pNext_;
11634 return *this;
11635 }
11636
11637 BindImageMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11638 {
11639 deviceIndexCount = deviceIndexCount_;
11640 return *this;
11641 }
11642
11643 BindImageMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11644 {
11645 pDeviceIndices = pDeviceIndices_;
11646 return *this;
11647 }
11648
11649 BindImageMemoryDeviceGroupInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11650 {
11651 SFRRectCount = SFRRectCount_;
11652 return *this;
11653 }
11654
11655 BindImageMemoryDeviceGroupInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11656 {
11657 pSFRRects = pSFRRects_;
11658 return *this;
11659 }
11660
11661 operator const VkBindImageMemoryDeviceGroupInfoKHX&() const
11662 {
11663 return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfoKHX*>(this);
11664 }
11665
11666 bool operator==( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11667 {
11668 return ( sType == rhs.sType )
11669 && ( pNext == rhs.pNext )
11670 && ( deviceIndexCount == rhs.deviceIndexCount )
11671 && ( pDeviceIndices == rhs.pDeviceIndices )
11672 && ( SFRRectCount == rhs.SFRRectCount )
11673 && ( pSFRRects == rhs.pSFRRects );
11674 }
11675
11676 bool operator!=( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11677 {
11678 return !operator==( rhs );
11679 }
11680
11681 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011682 StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfoKHX;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011683
11684 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011685 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011686 uint32_t deviceIndexCount;
11687 const uint32_t* pDeviceIndices;
11688 uint32_t SFRRectCount;
11689 const Rect2D* pSFRRects;
11690 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011691 static_assert( sizeof( BindImageMemoryDeviceGroupInfoKHX ) == sizeof( VkBindImageMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011692
11693 struct DeviceGroupRenderPassBeginInfoKHX
11694 {
11695 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011696 : deviceMask( deviceMask_ )
Mark Young0f183a82017-02-28 09:58:04 -070011697 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11698 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11699 {
11700 }
11701
11702 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11703 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011704 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011705 }
11706
11707 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11708 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011709 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011710 return *this;
11711 }
Mark Young0f183a82017-02-28 09:58:04 -070011712 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11713 {
11714 pNext = pNext_;
11715 return *this;
11716 }
11717
11718 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11719 {
11720 deviceMask = deviceMask_;
11721 return *this;
11722 }
11723
11724 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11725 {
11726 deviceRenderAreaCount = deviceRenderAreaCount_;
11727 return *this;
11728 }
11729
11730 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11731 {
11732 pDeviceRenderAreas = pDeviceRenderAreas_;
11733 return *this;
11734 }
11735
11736 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11737 {
11738 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11739 }
11740
11741 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11742 {
11743 return ( sType == rhs.sType )
11744 && ( pNext == rhs.pNext )
11745 && ( deviceMask == rhs.deviceMask )
11746 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11747 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11748 }
11749
11750 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11751 {
11752 return !operator==( rhs );
11753 }
11754
11755 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011756 StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011757
11758 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011759 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011760 uint32_t deviceMask;
11761 uint32_t deviceRenderAreaCount;
11762 const Rect2D* pDeviceRenderAreas;
11763 };
11764 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11765
11766 struct DeviceGroupCommandBufferBeginInfoKHX
11767 {
11768 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011769 : deviceMask( deviceMask_ )
Mark Young0f183a82017-02-28 09:58:04 -070011770 {
11771 }
11772
11773 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11774 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011775 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011776 }
11777
11778 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11779 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011780 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011781 return *this;
11782 }
Mark Young0f183a82017-02-28 09:58:04 -070011783 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11784 {
11785 pNext = pNext_;
11786 return *this;
11787 }
11788
11789 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11790 {
11791 deviceMask = deviceMask_;
11792 return *this;
11793 }
11794
11795 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11796 {
11797 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11798 }
11799
11800 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11801 {
11802 return ( sType == rhs.sType )
11803 && ( pNext == rhs.pNext )
11804 && ( deviceMask == rhs.deviceMask );
11805 }
11806
11807 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11808 {
11809 return !operator==( rhs );
11810 }
11811
11812 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011813 StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011814
11815 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011816 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011817 uint32_t deviceMask;
11818 };
11819 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11820
11821 struct DeviceGroupSubmitInfoKHX
11822 {
11823 DeviceGroupSubmitInfoKHX( uint32_t waitSemaphoreCount_ = 0, const uint32_t* pWaitSemaphoreDeviceIndices_ = nullptr, uint32_t commandBufferCount_ = 0, const uint32_t* pCommandBufferDeviceMasks_ = nullptr, uint32_t signalSemaphoreCount_ = 0, const uint32_t* pSignalSemaphoreDeviceIndices_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011824 : waitSemaphoreCount( waitSemaphoreCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011825 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11826 , commandBufferCount( commandBufferCount_ )
11827 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11828 , signalSemaphoreCount( signalSemaphoreCount_ )
11829 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11830 {
11831 }
11832
11833 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11834 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011835 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011836 }
11837
11838 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11839 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011840 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011841 return *this;
11842 }
Mark Young0f183a82017-02-28 09:58:04 -070011843 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11844 {
11845 pNext = pNext_;
11846 return *this;
11847 }
11848
11849 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11850 {
11851 waitSemaphoreCount = waitSemaphoreCount_;
11852 return *this;
11853 }
11854
11855 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11856 {
11857 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11858 return *this;
11859 }
11860
11861 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11862 {
11863 commandBufferCount = commandBufferCount_;
11864 return *this;
11865 }
11866
11867 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11868 {
11869 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11870 return *this;
11871 }
11872
11873 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11874 {
11875 signalSemaphoreCount = signalSemaphoreCount_;
11876 return *this;
11877 }
11878
11879 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11880 {
11881 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11882 return *this;
11883 }
11884
11885 operator const VkDeviceGroupSubmitInfoKHX&() const
11886 {
11887 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11888 }
11889
11890 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11891 {
11892 return ( sType == rhs.sType )
11893 && ( pNext == rhs.pNext )
11894 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11895 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11896 && ( commandBufferCount == rhs.commandBufferCount )
11897 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11898 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11899 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11900 }
11901
11902 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11903 {
11904 return !operator==( rhs );
11905 }
11906
11907 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011908 StructureType sType = StructureType::eDeviceGroupSubmitInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011909
11910 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011911 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011912 uint32_t waitSemaphoreCount;
11913 const uint32_t* pWaitSemaphoreDeviceIndices;
11914 uint32_t commandBufferCount;
11915 const uint32_t* pCommandBufferDeviceMasks;
11916 uint32_t signalSemaphoreCount;
11917 const uint32_t* pSignalSemaphoreDeviceIndices;
11918 };
11919 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11920
11921 struct DeviceGroupBindSparseInfoKHX
11922 {
11923 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011924 : resourceDeviceIndex( resourceDeviceIndex_ )
Mark Young0f183a82017-02-28 09:58:04 -070011925 , memoryDeviceIndex( memoryDeviceIndex_ )
11926 {
11927 }
11928
11929 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11930 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011931 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011932 }
11933
11934 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11935 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011936 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011937 return *this;
11938 }
Mark Young0f183a82017-02-28 09:58:04 -070011939 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11940 {
11941 pNext = pNext_;
11942 return *this;
11943 }
11944
11945 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11946 {
11947 resourceDeviceIndex = resourceDeviceIndex_;
11948 return *this;
11949 }
11950
11951 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11952 {
11953 memoryDeviceIndex = memoryDeviceIndex_;
11954 return *this;
11955 }
11956
11957 operator const VkDeviceGroupBindSparseInfoKHX&() const
11958 {
11959 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11960 }
11961
11962 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11963 {
11964 return ( sType == rhs.sType )
11965 && ( pNext == rhs.pNext )
11966 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11967 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11968 }
11969
11970 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11971 {
11972 return !operator==( rhs );
11973 }
11974
11975 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011976 StructureType sType = StructureType::eDeviceGroupBindSparseInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070011977
11978 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011979 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070011980 uint32_t resourceDeviceIndex;
11981 uint32_t memoryDeviceIndex;
11982 };
11983 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11984
11985 struct ImageSwapchainCreateInfoKHX
11986 {
11987 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070011988 : swapchain( swapchain_ )
Mark Young0f183a82017-02-28 09:58:04 -070011989 {
11990 }
11991
11992 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11993 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011994 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011995 }
11996
11997 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11998 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011999 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012000 return *this;
12001 }
Mark Young0f183a82017-02-28 09:58:04 -070012002 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
12003 {
12004 pNext = pNext_;
12005 return *this;
12006 }
12007
12008 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12009 {
12010 swapchain = swapchain_;
12011 return *this;
12012 }
12013
12014 operator const VkImageSwapchainCreateInfoKHX&() const
12015 {
12016 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
12017 }
12018
12019 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
12020 {
12021 return ( sType == rhs.sType )
12022 && ( pNext == rhs.pNext )
12023 && ( swapchain == rhs.swapchain );
12024 }
12025
12026 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
12027 {
12028 return !operator==( rhs );
12029 }
12030
12031 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012032 StructureType sType = StructureType::eImageSwapchainCreateInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070012033
12034 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012035 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012036 SwapchainKHR swapchain;
12037 };
12038 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
12039
12040 struct BindImageMemorySwapchainInfoKHX
12041 {
12042 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012043 : swapchain( swapchain_ )
Mark Young0f183a82017-02-28 09:58:04 -070012044 , imageIndex( imageIndex_ )
12045 {
12046 }
12047
12048 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
12049 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012050 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012051 }
12052
12053 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
12054 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012055 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012056 return *this;
12057 }
Mark Young0f183a82017-02-28 09:58:04 -070012058 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
12059 {
12060 pNext = pNext_;
12061 return *this;
12062 }
12063
12064 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12065 {
12066 swapchain = swapchain_;
12067 return *this;
12068 }
12069
12070 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
12071 {
12072 imageIndex = imageIndex_;
12073 return *this;
12074 }
12075
12076 operator const VkBindImageMemorySwapchainInfoKHX&() const
12077 {
12078 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
12079 }
12080
12081 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
12082 {
12083 return ( sType == rhs.sType )
12084 && ( pNext == rhs.pNext )
12085 && ( swapchain == rhs.swapchain )
12086 && ( imageIndex == rhs.imageIndex );
12087 }
12088
12089 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
12090 {
12091 return !operator==( rhs );
12092 }
12093
12094 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012095 StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070012096
12097 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012098 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012099 SwapchainKHR swapchain;
12100 uint32_t imageIndex;
12101 };
12102 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
12103
12104 struct AcquireNextImageInfoKHX
12105 {
12106 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012107 : swapchain( swapchain_ )
Mark Young0f183a82017-02-28 09:58:04 -070012108 , timeout( timeout_ )
12109 , semaphore( semaphore_ )
12110 , fence( fence_ )
12111 , deviceMask( deviceMask_ )
12112 {
12113 }
12114
12115 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
12116 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012117 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012118 }
12119
12120 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
12121 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012122 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012123 return *this;
12124 }
Mark Young0f183a82017-02-28 09:58:04 -070012125 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
12126 {
12127 pNext = pNext_;
12128 return *this;
12129 }
12130
12131 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12132 {
12133 swapchain = swapchain_;
12134 return *this;
12135 }
12136
12137 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
12138 {
12139 timeout = timeout_;
12140 return *this;
12141 }
12142
12143 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
12144 {
12145 semaphore = semaphore_;
12146 return *this;
12147 }
12148
12149 AcquireNextImageInfoKHX& setFence( Fence fence_ )
12150 {
12151 fence = fence_;
12152 return *this;
12153 }
12154
12155 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
12156 {
12157 deviceMask = deviceMask_;
12158 return *this;
12159 }
12160
12161 operator const VkAcquireNextImageInfoKHX&() const
12162 {
12163 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
12164 }
12165
12166 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
12167 {
12168 return ( sType == rhs.sType )
12169 && ( pNext == rhs.pNext )
12170 && ( swapchain == rhs.swapchain )
12171 && ( timeout == rhs.timeout )
12172 && ( semaphore == rhs.semaphore )
12173 && ( fence == rhs.fence )
12174 && ( deviceMask == rhs.deviceMask );
12175 }
12176
12177 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
12178 {
12179 return !operator==( rhs );
12180 }
12181
12182 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012183 StructureType sType = StructureType::eAcquireNextImageInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070012184
12185 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012186 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012187 SwapchainKHR swapchain;
12188 uint64_t timeout;
12189 Semaphore semaphore;
12190 Fence fence;
12191 uint32_t deviceMask;
12192 };
12193 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
12194
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012195 struct HdrMetadataEXT
12196 {
12197 HdrMetadataEXT( XYColorEXT displayPrimaryRed_ = XYColorEXT(), XYColorEXT displayPrimaryGreen_ = XYColorEXT(), XYColorEXT displayPrimaryBlue_ = XYColorEXT(), XYColorEXT whitePoint_ = XYColorEXT(), float maxLuminance_ = 0, float minLuminance_ = 0, float maxContentLightLevel_ = 0, float maxFrameAverageLightLevel_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012198 : displayPrimaryRed( displayPrimaryRed_ )
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012199 , displayPrimaryGreen( displayPrimaryGreen_ )
12200 , displayPrimaryBlue( displayPrimaryBlue_ )
12201 , whitePoint( whitePoint_ )
12202 , maxLuminance( maxLuminance_ )
12203 , minLuminance( minLuminance_ )
12204 , maxContentLightLevel( maxContentLightLevel_ )
12205 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
12206 {
12207 }
12208
12209 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
12210 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012211 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012212 }
12213
12214 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
12215 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012216 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012217 return *this;
12218 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012219 HdrMetadataEXT& setPNext( const void* pNext_ )
12220 {
12221 pNext = pNext_;
12222 return *this;
12223 }
12224
12225 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
12226 {
12227 displayPrimaryRed = displayPrimaryRed_;
12228 return *this;
12229 }
12230
12231 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
12232 {
12233 displayPrimaryGreen = displayPrimaryGreen_;
12234 return *this;
12235 }
12236
12237 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
12238 {
12239 displayPrimaryBlue = displayPrimaryBlue_;
12240 return *this;
12241 }
12242
12243 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
12244 {
12245 whitePoint = whitePoint_;
12246 return *this;
12247 }
12248
12249 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
12250 {
12251 maxLuminance = maxLuminance_;
12252 return *this;
12253 }
12254
12255 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
12256 {
12257 minLuminance = minLuminance_;
12258 return *this;
12259 }
12260
12261 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
12262 {
12263 maxContentLightLevel = maxContentLightLevel_;
12264 return *this;
12265 }
12266
12267 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
12268 {
12269 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
12270 return *this;
12271 }
12272
12273 operator const VkHdrMetadataEXT&() const
12274 {
12275 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
12276 }
12277
12278 bool operator==( HdrMetadataEXT const& rhs ) const
12279 {
12280 return ( sType == rhs.sType )
12281 && ( pNext == rhs.pNext )
12282 && ( displayPrimaryRed == rhs.displayPrimaryRed )
12283 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
12284 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
12285 && ( whitePoint == rhs.whitePoint )
12286 && ( maxLuminance == rhs.maxLuminance )
12287 && ( minLuminance == rhs.minLuminance )
12288 && ( maxContentLightLevel == rhs.maxContentLightLevel )
12289 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
12290 }
12291
12292 bool operator!=( HdrMetadataEXT const& rhs ) const
12293 {
12294 return !operator==( rhs );
12295 }
12296
12297 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012298 StructureType sType = StructureType::eHdrMetadataEXT;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012299
12300 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012301 const void* pNext = nullptr;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012302 XYColorEXT displayPrimaryRed;
12303 XYColorEXT displayPrimaryGreen;
12304 XYColorEXT displayPrimaryBlue;
12305 XYColorEXT whitePoint;
12306 float maxLuminance;
12307 float minLuminance;
12308 float maxContentLightLevel;
12309 float maxFrameAverageLightLevel;
12310 };
12311 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
12312
12313 struct PresentTimesInfoGOOGLE
12314 {
12315 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012316 : swapchainCount( swapchainCount_ )
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012317 , pTimes( pTimes_ )
12318 {
12319 }
12320
12321 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
12322 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012323 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012324 }
12325
12326 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
12327 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012328 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012329 return *this;
12330 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012331 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
12332 {
12333 pNext = pNext_;
12334 return *this;
12335 }
12336
12337 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12338 {
12339 swapchainCount = swapchainCount_;
12340 return *this;
12341 }
12342
12343 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12344 {
12345 pTimes = pTimes_;
12346 return *this;
12347 }
12348
12349 operator const VkPresentTimesInfoGOOGLE&() const
12350 {
12351 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12352 }
12353
12354 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12355 {
12356 return ( sType == rhs.sType )
12357 && ( pNext == rhs.pNext )
12358 && ( swapchainCount == rhs.swapchainCount )
12359 && ( pTimes == rhs.pTimes );
12360 }
12361
12362 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12363 {
12364 return !operator==( rhs );
12365 }
12366
12367 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012368 StructureType sType = StructureType::ePresentTimesInfoGOOGLE;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012369
12370 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012371 const void* pNext = nullptr;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012372 uint32_t swapchainCount;
12373 const PresentTimeGOOGLE* pTimes;
12374 };
12375 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12376
Mark Young0f183a82017-02-28 09:58:04 -070012377#ifdef VK_USE_PLATFORM_IOS_MVK
12378 struct IOSSurfaceCreateInfoMVK
12379 {
12380 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012381 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070012382 , pView( pView_ )
12383 {
12384 }
12385
12386 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12387 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012388 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012389 }
12390
12391 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12392 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012393 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012394 return *this;
12395 }
Mark Young0f183a82017-02-28 09:58:04 -070012396 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12397 {
12398 pNext = pNext_;
12399 return *this;
12400 }
12401
12402 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12403 {
12404 flags = flags_;
12405 return *this;
12406 }
12407
12408 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12409 {
12410 pView = pView_;
12411 return *this;
12412 }
12413
12414 operator const VkIOSSurfaceCreateInfoMVK&() const
12415 {
12416 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12417 }
12418
12419 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12420 {
12421 return ( sType == rhs.sType )
12422 && ( pNext == rhs.pNext )
12423 && ( flags == rhs.flags )
12424 && ( pView == rhs.pView );
12425 }
12426
12427 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12428 {
12429 return !operator==( rhs );
12430 }
12431
12432 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012433 StructureType sType = StructureType::eIosSurfaceCreateInfoMVK;
Mark Young0f183a82017-02-28 09:58:04 -070012434
12435 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012436 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012437 IOSSurfaceCreateFlagsMVK flags;
12438 const void* pView;
12439 };
12440 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12441#endif /*VK_USE_PLATFORM_IOS_MVK*/
12442
12443#ifdef VK_USE_PLATFORM_MACOS_MVK
12444 struct MacOSSurfaceCreateInfoMVK
12445 {
12446 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012447 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070012448 , pView( pView_ )
12449 {
12450 }
12451
12452 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12453 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012454 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012455 }
12456
12457 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12458 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012459 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012460 return *this;
12461 }
Mark Young0f183a82017-02-28 09:58:04 -070012462 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12463 {
12464 pNext = pNext_;
12465 return *this;
12466 }
12467
12468 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12469 {
12470 flags = flags_;
12471 return *this;
12472 }
12473
12474 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12475 {
12476 pView = pView_;
12477 return *this;
12478 }
12479
12480 operator const VkMacOSSurfaceCreateInfoMVK&() const
12481 {
12482 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12483 }
12484
12485 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12486 {
12487 return ( sType == rhs.sType )
12488 && ( pNext == rhs.pNext )
12489 && ( flags == rhs.flags )
12490 && ( pView == rhs.pView );
12491 }
12492
12493 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12494 {
12495 return !operator==( rhs );
12496 }
12497
12498 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012499 StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK;
Mark Young0f183a82017-02-28 09:58:04 -070012500
12501 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012502 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012503 MacOSSurfaceCreateFlagsMVK flags;
12504 const void* pView;
12505 };
12506 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12507#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12508
12509 struct PipelineViewportWScalingStateCreateInfoNV
12510 {
12511 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012512 : viewportWScalingEnable( viewportWScalingEnable_ )
Mark Young0f183a82017-02-28 09:58:04 -070012513 , viewportCount( viewportCount_ )
12514 , pViewportWScalings( pViewportWScalings_ )
12515 {
12516 }
12517
12518 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12519 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012520 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012521 }
12522
12523 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012525 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012526 return *this;
12527 }
Mark Young0f183a82017-02-28 09:58:04 -070012528 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12529 {
12530 pNext = pNext_;
12531 return *this;
12532 }
12533
12534 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12535 {
12536 viewportWScalingEnable = viewportWScalingEnable_;
12537 return *this;
12538 }
12539
12540 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12541 {
12542 viewportCount = viewportCount_;
12543 return *this;
12544 }
12545
12546 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12547 {
12548 pViewportWScalings = pViewportWScalings_;
12549 return *this;
12550 }
12551
12552 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12553 {
12554 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12555 }
12556
12557 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12558 {
12559 return ( sType == rhs.sType )
12560 && ( pNext == rhs.pNext )
12561 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12562 && ( viewportCount == rhs.viewportCount )
12563 && ( pViewportWScalings == rhs.pViewportWScalings );
12564 }
12565
12566 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12567 {
12568 return !operator==( rhs );
12569 }
12570
12571 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012572 StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV;
Mark Young0f183a82017-02-28 09:58:04 -070012573
12574 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012575 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012576 Bool32 viewportWScalingEnable;
12577 uint32_t viewportCount;
12578 const ViewportWScalingNV* pViewportWScalings;
12579 };
12580 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12581
12582 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12583 {
12584 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012585 : maxDiscardRectangles( maxDiscardRectangles_ )
Mark Young0f183a82017-02-28 09:58:04 -070012586 {
12587 }
12588
12589 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012591 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012592 }
12593
12594 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012596 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012597 return *this;
12598 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012599 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012600 {
12601 pNext = pNext_;
12602 return *this;
12603 }
12604
12605 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12606 {
12607 maxDiscardRectangles = maxDiscardRectangles_;
12608 return *this;
12609 }
12610
12611 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12612 {
12613 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12614 }
12615
12616 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12617 {
12618 return ( sType == rhs.sType )
12619 && ( pNext == rhs.pNext )
12620 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12621 }
12622
12623 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12624 {
12625 return !operator==( rhs );
12626 }
12627
12628 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012629 StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT;
Mark Young0f183a82017-02-28 09:58:04 -070012630
12631 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012632 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012633 uint32_t maxDiscardRectangles;
12634 };
12635 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12636
12637 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12638 {
12639 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12640 {
12641 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12642 }
12643
12644 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12645 {
12646 return ( sType == rhs.sType )
12647 && ( pNext == rhs.pNext )
12648 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12649 }
12650
12651 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12652 {
12653 return !operator==( rhs );
12654 }
12655
12656 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012657 StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
Mark Young0f183a82017-02-28 09:58:04 -070012658
12659 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012660 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070012661 Bool32 perViewPositionAllComponents;
12662 };
12663 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12664
Mark Lobodzinski54385432017-05-15 10:27:52 -060012665 struct PhysicalDeviceSurfaceInfo2KHR
12666 {
12667 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012668 : surface( surface_ )
Mark Lobodzinski54385432017-05-15 10:27:52 -060012669 {
12670 }
12671
12672 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012674 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012675 }
12676
12677 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012679 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012680 return *this;
12681 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012682 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12683 {
12684 pNext = pNext_;
12685 return *this;
12686 }
12687
12688 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12689 {
12690 surface = surface_;
12691 return *this;
12692 }
12693
12694 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12695 {
12696 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12697 }
12698
12699 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12700 {
12701 return ( sType == rhs.sType )
12702 && ( pNext == rhs.pNext )
12703 && ( surface == rhs.surface );
12704 }
12705
12706 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12707 {
12708 return !operator==( rhs );
12709 }
12710
12711 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012712 StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR;
Mark Lobodzinski54385432017-05-15 10:27:52 -060012713
12714 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012715 const void* pNext = nullptr;
Mark Lobodzinski54385432017-05-15 10:27:52 -060012716 SurfaceKHR surface;
12717 };
12718 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12719
Mark Youngabc2d6e2017-07-07 07:59:56 -060012720 struct PhysicalDevice16BitStorageFeaturesKHR
12721 {
12722 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012723 : storageBuffer16BitAccess( storageBuffer16BitAccess_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060012724 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12725 , storagePushConstant16( storagePushConstant16_ )
12726 , storageInputOutput16( storageInputOutput16_ )
12727 {
12728 }
12729
12730 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12731 {
12732 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12733 }
12734
12735 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12736 {
12737 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12738 return *this;
12739 }
12740 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12741 {
12742 pNext = pNext_;
12743 return *this;
12744 }
12745
12746 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12747 {
12748 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12749 return *this;
12750 }
12751
12752 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12753 {
12754 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12755 return *this;
12756 }
12757
12758 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12759 {
12760 storagePushConstant16 = storagePushConstant16_;
12761 return *this;
12762 }
12763
12764 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12765 {
12766 storageInputOutput16 = storageInputOutput16_;
12767 return *this;
12768 }
12769
12770 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12771 {
12772 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12773 }
12774
12775 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12776 {
12777 return ( sType == rhs.sType )
12778 && ( pNext == rhs.pNext )
12779 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12780 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12781 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12782 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12783 }
12784
12785 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12786 {
12787 return !operator==( rhs );
12788 }
12789
12790 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012791 StructureType sType = StructureType::ePhysicalDevice16BitStorageFeaturesKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012792
12793 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012794 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012795 Bool32 storageBuffer16BitAccess;
12796 Bool32 uniformAndStorageBuffer16BitAccess;
12797 Bool32 storagePushConstant16;
12798 Bool32 storageInputOutput16;
12799 };
12800 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12801
12802 struct BufferMemoryRequirementsInfo2KHR
12803 {
12804 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012805 : buffer( buffer_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060012806 {
12807 }
12808
12809 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12810 {
12811 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12812 }
12813
12814 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12815 {
12816 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12817 return *this;
12818 }
12819 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12820 {
12821 pNext = pNext_;
12822 return *this;
12823 }
12824
12825 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12826 {
12827 buffer = buffer_;
12828 return *this;
12829 }
12830
12831 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12832 {
12833 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12834 }
12835
12836 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12837 {
12838 return ( sType == rhs.sType )
12839 && ( pNext == rhs.pNext )
12840 && ( buffer == rhs.buffer );
12841 }
12842
12843 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12844 {
12845 return !operator==( rhs );
12846 }
12847
12848 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012849 StructureType sType = StructureType::eBufferMemoryRequirementsInfo2KHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012850
12851 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012852 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012853 Buffer buffer;
12854 };
12855 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12856
12857 struct ImageMemoryRequirementsInfo2KHR
12858 {
12859 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012860 : image( image_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060012861 {
12862 }
12863
12864 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
12865 {
12866 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12867 }
12868
12869 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
12870 {
12871 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12872 return *this;
12873 }
12874 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12875 {
12876 pNext = pNext_;
12877 return *this;
12878 }
12879
12880 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
12881 {
12882 image = image_;
12883 return *this;
12884 }
12885
12886 operator const VkImageMemoryRequirementsInfo2KHR&() const
12887 {
12888 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
12889 }
12890
12891 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12892 {
12893 return ( sType == rhs.sType )
12894 && ( pNext == rhs.pNext )
12895 && ( image == rhs.image );
12896 }
12897
12898 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12899 {
12900 return !operator==( rhs );
12901 }
12902
12903 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012904 StructureType sType = StructureType::eImageMemoryRequirementsInfo2KHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012905
12906 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012907 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012908 Image image;
12909 };
12910 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12911
12912 struct ImageSparseMemoryRequirementsInfo2KHR
12913 {
12914 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012915 : image( image_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060012916 {
12917 }
12918
12919 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12920 {
12921 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12922 }
12923
12924 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12925 {
12926 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12927 return *this;
12928 }
12929 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12930 {
12931 pNext = pNext_;
12932 return *this;
12933 }
12934
12935 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
12936 {
12937 image = image_;
12938 return *this;
12939 }
12940
12941 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
12942 {
12943 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
12944 }
12945
12946 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12947 {
12948 return ( sType == rhs.sType )
12949 && ( pNext == rhs.pNext )
12950 && ( image == rhs.image );
12951 }
12952
12953 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12954 {
12955 return !operator==( rhs );
12956 }
12957
12958 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012959 StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2KHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012960
12961 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012962 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012963 Image image;
12964 };
12965 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12966
12967 struct MemoryRequirements2KHR
12968 {
12969 operator const VkMemoryRequirements2KHR&() const
12970 {
12971 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
12972 }
12973
12974 bool operator==( MemoryRequirements2KHR const& rhs ) const
12975 {
12976 return ( sType == rhs.sType )
12977 && ( pNext == rhs.pNext )
12978 && ( memoryRequirements == rhs.memoryRequirements );
12979 }
12980
12981 bool operator!=( MemoryRequirements2KHR const& rhs ) const
12982 {
12983 return !operator==( rhs );
12984 }
12985
12986 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012987 StructureType sType = StructureType::eMemoryRequirements2KHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012988
12989 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070012990 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060012991 MemoryRequirements memoryRequirements;
12992 };
12993 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
12994
12995 struct MemoryDedicatedRequirementsKHR
12996 {
12997 operator const VkMemoryDedicatedRequirementsKHR&() const
12998 {
12999 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
13000 }
13001
13002 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
13003 {
13004 return ( sType == rhs.sType )
13005 && ( pNext == rhs.pNext )
13006 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
13007 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
13008 }
13009
13010 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
13011 {
13012 return !operator==( rhs );
13013 }
13014
13015 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013016 StructureType sType = StructureType::eMemoryDedicatedRequirementsKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060013017
13018 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013019 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060013020 Bool32 prefersDedicatedAllocation;
13021 Bool32 requiresDedicatedAllocation;
13022 };
13023 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
13024
13025 struct MemoryDedicatedAllocateInfoKHR
13026 {
13027 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013028 : image( image_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060013029 , buffer( buffer_ )
13030 {
13031 }
13032
13033 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13034 {
13035 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13036 }
13037
13038 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13039 {
13040 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13041 return *this;
13042 }
13043 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
13044 {
13045 pNext = pNext_;
13046 return *this;
13047 }
13048
13049 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
13050 {
13051 image = image_;
13052 return *this;
13053 }
13054
13055 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
13056 {
13057 buffer = buffer_;
13058 return *this;
13059 }
13060
13061 operator const VkMemoryDedicatedAllocateInfoKHR&() const
13062 {
13063 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
13064 }
13065
13066 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13067 {
13068 return ( sType == rhs.sType )
13069 && ( pNext == rhs.pNext )
13070 && ( image == rhs.image )
13071 && ( buffer == rhs.buffer );
13072 }
13073
13074 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13075 {
13076 return !operator==( rhs );
13077 }
13078
13079 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013080 StructureType sType = StructureType::eMemoryDedicatedAllocateInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060013081
13082 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013083 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060013084 Image image;
13085 Buffer buffer;
13086 };
13087 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
13088
Lenny Komowb79f04a2017-09-18 17:07:00 -060013089 struct SamplerYcbcrConversionInfoKHR
13090 {
13091 SamplerYcbcrConversionInfoKHR( SamplerYcbcrConversionKHR conversion_ = SamplerYcbcrConversionKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013092 : conversion( conversion_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060013093 {
13094 }
13095
13096 SamplerYcbcrConversionInfoKHR( VkSamplerYcbcrConversionInfoKHR const & rhs )
13097 {
13098 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13099 }
13100
13101 SamplerYcbcrConversionInfoKHR& operator=( VkSamplerYcbcrConversionInfoKHR const & rhs )
13102 {
13103 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13104 return *this;
13105 }
13106 SamplerYcbcrConversionInfoKHR& setPNext( const void* pNext_ )
13107 {
13108 pNext = pNext_;
13109 return *this;
13110 }
13111
13112 SamplerYcbcrConversionInfoKHR& setConversion( SamplerYcbcrConversionKHR conversion_ )
13113 {
13114 conversion = conversion_;
13115 return *this;
13116 }
13117
13118 operator const VkSamplerYcbcrConversionInfoKHR&() const
13119 {
13120 return *reinterpret_cast<const VkSamplerYcbcrConversionInfoKHR*>(this);
13121 }
13122
13123 bool operator==( SamplerYcbcrConversionInfoKHR const& rhs ) const
13124 {
13125 return ( sType == rhs.sType )
13126 && ( pNext == rhs.pNext )
13127 && ( conversion == rhs.conversion );
13128 }
13129
13130 bool operator!=( SamplerYcbcrConversionInfoKHR const& rhs ) const
13131 {
13132 return !operator==( rhs );
13133 }
13134
13135 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013136 StructureType sType = StructureType::eSamplerYcbcrConversionInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013137
13138 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013139 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013140 SamplerYcbcrConversionKHR conversion;
13141 };
13142 static_assert( sizeof( SamplerYcbcrConversionInfoKHR ) == sizeof( VkSamplerYcbcrConversionInfoKHR ), "struct and wrapper have different size!" );
13143
13144 struct PhysicalDeviceSamplerYcbcrConversionFeaturesKHR
13145 {
13146 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( Bool32 samplerYcbcrConversion_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013147 : samplerYcbcrConversion( samplerYcbcrConversion_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060013148 {
13149 }
13150
13151 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13152 {
13153 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13154 }
13155
13156 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13157 {
13158 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13159 return *this;
13160 }
13161 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setPNext( void* pNext_ )
13162 {
13163 pNext = pNext_;
13164 return *this;
13165 }
13166
13167 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
13168 {
13169 samplerYcbcrConversion = samplerYcbcrConversion_;
13170 return *this;
13171 }
13172
13173 operator const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR&() const
13174 {
13175 return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR*>(this);
13176 }
13177
13178 bool operator==( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13179 {
13180 return ( sType == rhs.sType )
13181 && ( pNext == rhs.pNext )
13182 && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
13183 }
13184
13185 bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13186 {
13187 return !operator==( rhs );
13188 }
13189
13190 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013191 StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013192
13193 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013194 void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013195 Bool32 samplerYcbcrConversion;
13196 };
13197 static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR ), "struct and wrapper have different size!" );
13198
13199 struct SamplerYcbcrConversionImageFormatPropertiesKHR
13200 {
13201 operator const VkSamplerYcbcrConversionImageFormatPropertiesKHR&() const
13202 {
13203 return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatPropertiesKHR*>(this);
13204 }
13205
13206 bool operator==( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13207 {
13208 return ( sType == rhs.sType )
13209 && ( pNext == rhs.pNext )
13210 && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
13211 }
13212
13213 bool operator!=( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13214 {
13215 return !operator==( rhs );
13216 }
13217
13218 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013219 StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatPropertiesKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013220
13221 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013222 void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013223 uint32_t combinedImageSamplerDescriptorCount;
13224 };
13225 static_assert( sizeof( SamplerYcbcrConversionImageFormatPropertiesKHR ) == sizeof( VkSamplerYcbcrConversionImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
13226
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013227 struct TextureLODGatherFormatPropertiesAMD
13228 {
13229 operator const VkTextureLODGatherFormatPropertiesAMD&() const
13230 {
13231 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
13232 }
13233
13234 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13235 {
13236 return ( sType == rhs.sType )
13237 && ( pNext == rhs.pNext )
13238 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
13239 }
13240
13241 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13242 {
13243 return !operator==( rhs );
13244 }
13245
13246 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013247 StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013248
13249 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013250 void* pNext = nullptr;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013251 Bool32 supportsTextureGatherLODBiasAMD;
13252 };
13253 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
13254
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013255 struct PipelineCoverageToColorStateCreateInfoNV
13256 {
13257 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013258 : flags( flags_ )
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013259 , coverageToColorEnable( coverageToColorEnable_ )
13260 , coverageToColorLocation( coverageToColorLocation_ )
13261 {
13262 }
13263
13264 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13265 {
13266 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13267 }
13268
13269 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13270 {
13271 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13272 return *this;
13273 }
13274 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
13275 {
13276 pNext = pNext_;
13277 return *this;
13278 }
13279
13280 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
13281 {
13282 flags = flags_;
13283 return *this;
13284 }
13285
13286 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
13287 {
13288 coverageToColorEnable = coverageToColorEnable_;
13289 return *this;
13290 }
13291
13292 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
13293 {
13294 coverageToColorLocation = coverageToColorLocation_;
13295 return *this;
13296 }
13297
13298 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
13299 {
13300 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
13301 }
13302
13303 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13304 {
13305 return ( sType == rhs.sType )
13306 && ( pNext == rhs.pNext )
13307 && ( flags == rhs.flags )
13308 && ( coverageToColorEnable == rhs.coverageToColorEnable )
13309 && ( coverageToColorLocation == rhs.coverageToColorLocation );
13310 }
13311
13312 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13313 {
13314 return !operator==( rhs );
13315 }
13316
13317 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013318 StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013319
13320 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013321 const void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013322 PipelineCoverageToColorStateCreateFlagsNV flags;
13323 Bool32 coverageToColorEnable;
13324 uint32_t coverageToColorLocation;
13325 };
13326 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
13327
13328 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
13329 {
13330 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
13331 {
13332 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
13333 }
13334
13335 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13336 {
13337 return ( sType == rhs.sType )
13338 && ( pNext == rhs.pNext )
13339 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
13340 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
13341 }
13342
13343 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13344 {
13345 return !operator==( rhs );
13346 }
13347
13348 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013349 StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013350
13351 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013352 void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013353 Bool32 filterMinmaxSingleComponentFormats;
13354 Bool32 filterMinmaxImageComponentMapping;
13355 };
13356 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
13357
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013358 struct MultisamplePropertiesEXT
13359 {
13360 operator const VkMultisamplePropertiesEXT&() const
13361 {
13362 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
13363 }
13364
13365 bool operator==( MultisamplePropertiesEXT const& rhs ) const
13366 {
13367 return ( sType == rhs.sType )
13368 && ( pNext == rhs.pNext )
13369 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
13370 }
13371
13372 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
13373 {
13374 return !operator==( rhs );
13375 }
13376
13377 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013378 StructureType sType = StructureType::eMultisamplePropertiesEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013379
13380 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013381 void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013382 Extent2D maxSampleLocationGridSize;
13383 };
13384 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
13385
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013386 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
13387 {
13388 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013389 : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013390 {
13391 }
13392
13393 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13394 {
13395 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13396 }
13397
13398 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13399 {
13400 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13401 return *this;
13402 }
13403 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
13404 {
13405 pNext = pNext_;
13406 return *this;
13407 }
13408
13409 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
13410 {
13411 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
13412 return *this;
13413 }
13414
13415 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
13416 {
13417 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
13418 }
13419
13420 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13421 {
13422 return ( sType == rhs.sType )
13423 && ( pNext == rhs.pNext )
13424 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
13425 }
13426
13427 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13428 {
13429 return !operator==( rhs );
13430 }
13431
13432 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013433 StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013434
13435 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013436 void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013437 Bool32 advancedBlendCoherentOperations;
13438 };
13439 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
13440
13441 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
13442 {
13443 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
13444 {
13445 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
13446 }
13447
13448 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13449 {
13450 return ( sType == rhs.sType )
13451 && ( pNext == rhs.pNext )
13452 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
13453 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
13454 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
13455 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
13456 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
13457 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
13458 }
13459
13460 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13461 {
13462 return !operator==( rhs );
13463 }
13464
13465 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013466 StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013467
13468 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013469 void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013470 uint32_t advancedBlendMaxColorAttachments;
13471 Bool32 advancedBlendIndependentBlend;
13472 Bool32 advancedBlendNonPremultipliedSrcColor;
13473 Bool32 advancedBlendNonPremultipliedDstColor;
13474 Bool32 advancedBlendCorrelatedOverlap;
13475 Bool32 advancedBlendAllOperations;
13476 };
13477 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
13478
Lenny Komowb79f04a2017-09-18 17:07:00 -060013479 struct ImageFormatListCreateInfoKHR
13480 {
13481 ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, const Format* pViewFormats_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013482 : viewFormatCount( viewFormatCount_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060013483 , pViewFormats( pViewFormats_ )
13484 {
13485 }
13486
13487 ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
13488 {
13489 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13490 }
13491
13492 ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
13493 {
13494 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13495 return *this;
13496 }
13497 ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
13498 {
13499 pNext = pNext_;
13500 return *this;
13501 }
13502
13503 ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
13504 {
13505 viewFormatCount = viewFormatCount_;
13506 return *this;
13507 }
13508
13509 ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
13510 {
13511 pViewFormats = pViewFormats_;
13512 return *this;
13513 }
13514
13515 operator const VkImageFormatListCreateInfoKHR&() const
13516 {
13517 return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
13518 }
13519
13520 bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
13521 {
13522 return ( sType == rhs.sType )
13523 && ( pNext == rhs.pNext )
13524 && ( viewFormatCount == rhs.viewFormatCount )
13525 && ( pViewFormats == rhs.pViewFormats );
13526 }
13527
13528 bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
13529 {
13530 return !operator==( rhs );
13531 }
13532
13533 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013534 StructureType sType = StructureType::eImageFormatListCreateInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013535
13536 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013537 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060013538 uint32_t viewFormatCount;
13539 const Format* pViewFormats;
13540 };
13541 static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
13542
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013543 struct ValidationCacheCreateInfoEXT
13544 {
13545 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013546 : flags( flags_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013547 , initialDataSize( initialDataSize_ )
13548 , pInitialData( pInitialData_ )
13549 {
13550 }
13551
13552 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
13553 {
13554 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13555 }
13556
13557 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
13558 {
13559 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13560 return *this;
13561 }
13562 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13563 {
13564 pNext = pNext_;
13565 return *this;
13566 }
13567
13568 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
13569 {
13570 flags = flags_;
13571 return *this;
13572 }
13573
13574 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
13575 {
13576 initialDataSize = initialDataSize_;
13577 return *this;
13578 }
13579
13580 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
13581 {
13582 pInitialData = pInitialData_;
13583 return *this;
13584 }
13585
13586 operator const VkValidationCacheCreateInfoEXT&() const
13587 {
13588 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
13589 }
13590
13591 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
13592 {
13593 return ( sType == rhs.sType )
13594 && ( pNext == rhs.pNext )
13595 && ( flags == rhs.flags )
13596 && ( initialDataSize == rhs.initialDataSize )
13597 && ( pInitialData == rhs.pInitialData );
13598 }
13599
13600 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
13601 {
13602 return !operator==( rhs );
13603 }
13604
13605 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013606 StructureType sType = StructureType::eValidationCacheCreateInfoEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013607
13608 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013609 const void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013610 ValidationCacheCreateFlagsEXT flags;
13611 size_t initialDataSize;
13612 const void* pInitialData;
13613 };
13614 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13615
13616 struct ShaderModuleValidationCacheCreateInfoEXT
13617 {
13618 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013619 : validationCache( validationCache_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013620 {
13621 }
13622
13623 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13624 {
13625 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13626 }
13627
13628 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13629 {
13630 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13631 return *this;
13632 }
13633 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13634 {
13635 pNext = pNext_;
13636 return *this;
13637 }
13638
13639 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
13640 {
13641 validationCache = validationCache_;
13642 return *this;
13643 }
13644
13645 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
13646 {
13647 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
13648 }
13649
13650 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13651 {
13652 return ( sType == rhs.sType )
13653 && ( pNext == rhs.pNext )
13654 && ( validationCache == rhs.validationCache );
13655 }
13656
13657 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13658 {
13659 return !operator==( rhs );
13660 }
13661
13662 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013663 StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013664
13665 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013666 const void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013667 ValidationCacheEXT validationCache;
13668 };
13669 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13670
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013671 struct MemoryHostPointerPropertiesEXT
13672 {
13673 MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013674 : memoryTypeBits( memoryTypeBits_ )
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013675 {
13676 }
13677
13678 MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs )
13679 {
13680 memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
13681 }
13682
13683 MemoryHostPointerPropertiesEXT& operator=( VkMemoryHostPointerPropertiesEXT const & rhs )
13684 {
13685 memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
13686 return *this;
13687 }
13688 MemoryHostPointerPropertiesEXT& setPNext( void* pNext_ )
13689 {
13690 pNext = pNext_;
13691 return *this;
13692 }
13693
13694 MemoryHostPointerPropertiesEXT& setMemoryTypeBits( uint32_t memoryTypeBits_ )
13695 {
13696 memoryTypeBits = memoryTypeBits_;
13697 return *this;
13698 }
13699
13700 operator const VkMemoryHostPointerPropertiesEXT&() const
13701 {
13702 return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT*>(this);
13703 }
13704
13705 bool operator==( MemoryHostPointerPropertiesEXT const& rhs ) const
13706 {
13707 return ( sType == rhs.sType )
13708 && ( pNext == rhs.pNext )
13709 && ( memoryTypeBits == rhs.memoryTypeBits );
13710 }
13711
13712 bool operator!=( MemoryHostPointerPropertiesEXT const& rhs ) const
13713 {
13714 return !operator==( rhs );
13715 }
13716
13717 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013718 StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT;
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013719
13720 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013721 void* pNext = nullptr;
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013722 uint32_t memoryTypeBits;
13723 };
13724 static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "struct and wrapper have different size!" );
13725
13726 struct PhysicalDeviceExternalMemoryHostPropertiesEXT
13727 {
13728 PhysicalDeviceExternalMemoryHostPropertiesEXT( DeviceSize minImportedHostPointerAlignment_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013729 : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ )
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013730 {
13731 }
13732
13733 PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
13734 {
13735 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
13736 }
13737
13738 PhysicalDeviceExternalMemoryHostPropertiesEXT& operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
13739 {
13740 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
13741 return *this;
13742 }
13743 PhysicalDeviceExternalMemoryHostPropertiesEXT& setPNext( void* pNext_ )
13744 {
13745 pNext = pNext_;
13746 return *this;
13747 }
13748
13749 PhysicalDeviceExternalMemoryHostPropertiesEXT& setMinImportedHostPointerAlignment( DeviceSize minImportedHostPointerAlignment_ )
13750 {
13751 minImportedHostPointerAlignment = minImportedHostPointerAlignment_;
13752 return *this;
13753 }
13754
13755 operator const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&() const
13756 {
13757 return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(this);
13758 }
13759
13760 bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
13761 {
13762 return ( sType == rhs.sType )
13763 && ( pNext == rhs.pNext )
13764 && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
13765 }
13766
13767 bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
13768 {
13769 return !operator==( rhs );
13770 }
13771
13772 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013773 StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT;
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013774
13775 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013776 void* pNext = nullptr;
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013777 DeviceSize minImportedHostPointerAlignment;
13778 };
13779 static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "struct and wrapper have different size!" );
13780
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013781 struct PhysicalDeviceConservativeRasterizationPropertiesEXT
13782 {
13783 PhysicalDeviceConservativeRasterizationPropertiesEXT( float primitiveOverestimationSize_ = 0, float maxExtraPrimitiveOverestimationSize_ = 0, float extraPrimitiveOverestimationSizeGranularity_ = 0, Bool32 primitiveUnderestimation_ = 0, Bool32 conservativePointAndLineRasterization_ = 0, Bool32 degenerateTrianglesRasterized_ = 0, Bool32 degenerateLinesRasterized_ = 0, Bool32 fullyCoveredFragmentShaderInputVariable_ = 0, Bool32 conservativeRasterizationPostDepthCoverage_ = 0 )
13784 : primitiveOverestimationSize( primitiveOverestimationSize_ )
13785 , maxExtraPrimitiveOverestimationSize( maxExtraPrimitiveOverestimationSize_ )
13786 , extraPrimitiveOverestimationSizeGranularity( extraPrimitiveOverestimationSizeGranularity_ )
13787 , primitiveUnderestimation( primitiveUnderestimation_ )
13788 , conservativePointAndLineRasterization( conservativePointAndLineRasterization_ )
13789 , degenerateTrianglesRasterized( degenerateTrianglesRasterized_ )
13790 , degenerateLinesRasterized( degenerateLinesRasterized_ )
13791 , fullyCoveredFragmentShaderInputVariable( fullyCoveredFragmentShaderInputVariable_ )
13792 , conservativeRasterizationPostDepthCoverage( conservativeRasterizationPostDepthCoverage_ )
13793 {
13794 }
13795
13796 PhysicalDeviceConservativeRasterizationPropertiesEXT( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs )
13797 {
13798 memcpy( this, &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
13799 }
13800
13801 PhysicalDeviceConservativeRasterizationPropertiesEXT& operator=( VkPhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs )
13802 {
13803 memcpy( this, &rhs, sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) );
13804 return *this;
13805 }
13806 PhysicalDeviceConservativeRasterizationPropertiesEXT& setPNext( void* pNext_ )
13807 {
13808 pNext = pNext_;
13809 return *this;
13810 }
13811
13812 PhysicalDeviceConservativeRasterizationPropertiesEXT& setPrimitiveOverestimationSize( float primitiveOverestimationSize_ )
13813 {
13814 primitiveOverestimationSize = primitiveOverestimationSize_;
13815 return *this;
13816 }
13817
13818 PhysicalDeviceConservativeRasterizationPropertiesEXT& setMaxExtraPrimitiveOverestimationSize( float maxExtraPrimitiveOverestimationSize_ )
13819 {
13820 maxExtraPrimitiveOverestimationSize = maxExtraPrimitiveOverestimationSize_;
13821 return *this;
13822 }
13823
13824 PhysicalDeviceConservativeRasterizationPropertiesEXT& setExtraPrimitiveOverestimationSizeGranularity( float extraPrimitiveOverestimationSizeGranularity_ )
13825 {
13826 extraPrimitiveOverestimationSizeGranularity = extraPrimitiveOverestimationSizeGranularity_;
13827 return *this;
13828 }
13829
13830 PhysicalDeviceConservativeRasterizationPropertiesEXT& setPrimitiveUnderestimation( Bool32 primitiveUnderestimation_ )
13831 {
13832 primitiveUnderestimation = primitiveUnderestimation_;
13833 return *this;
13834 }
13835
13836 PhysicalDeviceConservativeRasterizationPropertiesEXT& setConservativePointAndLineRasterization( Bool32 conservativePointAndLineRasterization_ )
13837 {
13838 conservativePointAndLineRasterization = conservativePointAndLineRasterization_;
13839 return *this;
13840 }
13841
13842 PhysicalDeviceConservativeRasterizationPropertiesEXT& setDegenerateTrianglesRasterized( Bool32 degenerateTrianglesRasterized_ )
13843 {
13844 degenerateTrianglesRasterized = degenerateTrianglesRasterized_;
13845 return *this;
13846 }
13847
13848 PhysicalDeviceConservativeRasterizationPropertiesEXT& setDegenerateLinesRasterized( Bool32 degenerateLinesRasterized_ )
13849 {
13850 degenerateLinesRasterized = degenerateLinesRasterized_;
13851 return *this;
13852 }
13853
13854 PhysicalDeviceConservativeRasterizationPropertiesEXT& setFullyCoveredFragmentShaderInputVariable( Bool32 fullyCoveredFragmentShaderInputVariable_ )
13855 {
13856 fullyCoveredFragmentShaderInputVariable = fullyCoveredFragmentShaderInputVariable_;
13857 return *this;
13858 }
13859
13860 PhysicalDeviceConservativeRasterizationPropertiesEXT& setConservativeRasterizationPostDepthCoverage( Bool32 conservativeRasterizationPostDepthCoverage_ )
13861 {
13862 conservativeRasterizationPostDepthCoverage = conservativeRasterizationPostDepthCoverage_;
13863 return *this;
13864 }
13865
13866 operator const VkPhysicalDeviceConservativeRasterizationPropertiesEXT&() const
13867 {
13868 return *reinterpret_cast<const VkPhysicalDeviceConservativeRasterizationPropertiesEXT*>(this);
13869 }
13870
13871 bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const
13872 {
13873 return ( sType == rhs.sType )
13874 && ( pNext == rhs.pNext )
13875 && ( primitiveOverestimationSize == rhs.primitiveOverestimationSize )
13876 && ( maxExtraPrimitiveOverestimationSize == rhs.maxExtraPrimitiveOverestimationSize )
13877 && ( extraPrimitiveOverestimationSizeGranularity == rhs.extraPrimitiveOverestimationSizeGranularity )
13878 && ( primitiveUnderestimation == rhs.primitiveUnderestimation )
13879 && ( conservativePointAndLineRasterization == rhs.conservativePointAndLineRasterization )
13880 && ( degenerateTrianglesRasterized == rhs.degenerateTrianglesRasterized )
13881 && ( degenerateLinesRasterized == rhs.degenerateLinesRasterized )
13882 && ( fullyCoveredFragmentShaderInputVariable == rhs.fullyCoveredFragmentShaderInputVariable )
13883 && ( conservativeRasterizationPostDepthCoverage == rhs.conservativeRasterizationPostDepthCoverage );
13884 }
13885
13886 bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const
13887 {
13888 return !operator==( rhs );
13889 }
13890
13891 private:
13892 StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT;
13893
13894 public:
13895 void* pNext = nullptr;
13896 float primitiveOverestimationSize;
13897 float maxExtraPrimitiveOverestimationSize;
13898 float extraPrimitiveOverestimationSizeGranularity;
13899 Bool32 primitiveUnderestimation;
13900 Bool32 conservativePointAndLineRasterization;
13901 Bool32 degenerateTrianglesRasterized;
13902 Bool32 degenerateLinesRasterized;
13903 Bool32 fullyCoveredFragmentShaderInputVariable;
13904 Bool32 conservativeRasterizationPostDepthCoverage;
13905 };
13906 static_assert( sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), "struct and wrapper have different size!" );
13907
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013908 enum class SubpassContents
13909 {
13910 eInline = VK_SUBPASS_CONTENTS_INLINE,
13911 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13912 };
13913
13914 struct PresentInfoKHR
13915 {
13916 PresentInfoKHR( uint32_t waitSemaphoreCount_ = 0, const Semaphore* pWaitSemaphores_ = nullptr, uint32_t swapchainCount_ = 0, const SwapchainKHR* pSwapchains_ = nullptr, const uint32_t* pImageIndices_ = nullptr, Result* pResults_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070013917 : waitSemaphoreCount( waitSemaphoreCount_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013918 , pWaitSemaphores( pWaitSemaphores_ )
13919 , swapchainCount( swapchainCount_ )
13920 , pSwapchains( pSwapchains_ )
13921 , pImageIndices( pImageIndices_ )
13922 , pResults( pResults_ )
13923 {
13924 }
13925
13926 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013928 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013929 }
13930
13931 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13932 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013933 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013934 return *this;
13935 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013936 PresentInfoKHR& setPNext( const void* pNext_ )
13937 {
13938 pNext = pNext_;
13939 return *this;
13940 }
13941
13942 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13943 {
13944 waitSemaphoreCount = waitSemaphoreCount_;
13945 return *this;
13946 }
13947
13948 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13949 {
13950 pWaitSemaphores = pWaitSemaphores_;
13951 return *this;
13952 }
13953
13954 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13955 {
13956 swapchainCount = swapchainCount_;
13957 return *this;
13958 }
13959
13960 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13961 {
13962 pSwapchains = pSwapchains_;
13963 return *this;
13964 }
13965
13966 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13967 {
13968 pImageIndices = pImageIndices_;
13969 return *this;
13970 }
13971
13972 PresentInfoKHR& setPResults( Result* pResults_ )
13973 {
13974 pResults = pResults_;
13975 return *this;
13976 }
13977
13978 operator const VkPresentInfoKHR&() const
13979 {
13980 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13981 }
13982
13983 bool operator==( PresentInfoKHR const& rhs ) const
13984 {
13985 return ( sType == rhs.sType )
13986 && ( pNext == rhs.pNext )
13987 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13988 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13989 && ( swapchainCount == rhs.swapchainCount )
13990 && ( pSwapchains == rhs.pSwapchains )
13991 && ( pImageIndices == rhs.pImageIndices )
13992 && ( pResults == rhs.pResults );
13993 }
13994
13995 bool operator!=( PresentInfoKHR const& rhs ) const
13996 {
13997 return !operator==( rhs );
13998 }
13999
14000 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014001 StructureType sType = StructureType::ePresentInfoKHR;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014002
14003 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014004 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014005 uint32_t waitSemaphoreCount;
14006 const Semaphore* pWaitSemaphores;
14007 uint32_t swapchainCount;
14008 const SwapchainKHR* pSwapchains;
14009 const uint32_t* pImageIndices;
14010 Result* pResults;
14011 };
14012 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
14013
14014 enum class DynamicState
14015 {
14016 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
14017 eScissor = VK_DYNAMIC_STATE_SCISSOR,
14018 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
14019 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
14020 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
14021 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
14022 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
14023 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070014024 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
14025 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014026 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
14027 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014028 };
14029
14030 struct PipelineDynamicStateCreateInfo
14031 {
14032 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014033 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014034 , dynamicStateCount( dynamicStateCount_ )
14035 , pDynamicStates( pDynamicStates_ )
14036 {
14037 }
14038
14039 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
14040 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014041 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014042 }
14043
14044 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
14045 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014046 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014047 return *this;
14048 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014049 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
14050 {
14051 pNext = pNext_;
14052 return *this;
14053 }
14054
14055 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
14056 {
14057 flags = flags_;
14058 return *this;
14059 }
14060
14061 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
14062 {
14063 dynamicStateCount = dynamicStateCount_;
14064 return *this;
14065 }
14066
14067 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
14068 {
14069 pDynamicStates = pDynamicStates_;
14070 return *this;
14071 }
14072
14073 operator const VkPipelineDynamicStateCreateInfo&() const
14074 {
14075 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
14076 }
14077
14078 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
14079 {
14080 return ( sType == rhs.sType )
14081 && ( pNext == rhs.pNext )
14082 && ( flags == rhs.flags )
14083 && ( dynamicStateCount == rhs.dynamicStateCount )
14084 && ( pDynamicStates == rhs.pDynamicStates );
14085 }
14086
14087 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
14088 {
14089 return !operator==( rhs );
14090 }
14091
14092 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014093 StructureType sType = StructureType::ePipelineDynamicStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014094
14095 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014096 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014097 PipelineDynamicStateCreateFlags flags;
14098 uint32_t dynamicStateCount;
14099 const DynamicState* pDynamicStates;
14100 };
14101 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
14102
Mark Young0f183a82017-02-28 09:58:04 -070014103 enum class DescriptorUpdateTemplateTypeKHR
14104 {
14105 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
14106 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
14107 };
14108
14109 struct DescriptorUpdateTemplateCreateInfoKHR
14110 {
14111 DescriptorUpdateTemplateCreateInfoKHR( DescriptorUpdateTemplateCreateFlagsKHR flags_ = DescriptorUpdateTemplateCreateFlagsKHR(), uint32_t descriptorUpdateEntryCount_ = 0, const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ = nullptr, DescriptorUpdateTemplateTypeKHR templateType_ = DescriptorUpdateTemplateTypeKHR::eDescriptorSet, DescriptorSetLayout descriptorSetLayout_ = DescriptorSetLayout(), PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, PipelineLayout pipelineLayout_ = PipelineLayout(), uint32_t set_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014112 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070014113 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
14114 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
14115 , templateType( templateType_ )
14116 , descriptorSetLayout( descriptorSetLayout_ )
14117 , pipelineBindPoint( pipelineBindPoint_ )
14118 , pipelineLayout( pipelineLayout_ )
14119 , set( set_ )
14120 {
14121 }
14122
14123 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14124 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014125 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014126 }
14127
14128 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14129 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014130 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014131 return *this;
14132 }
Mark Young0f183a82017-02-28 09:58:04 -070014133 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
14134 {
14135 pNext = pNext_;
14136 return *this;
14137 }
14138
14139 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
14140 {
14141 flags = flags_;
14142 return *this;
14143 }
14144
14145 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
14146 {
14147 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
14148 return *this;
14149 }
14150
14151 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
14152 {
14153 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
14154 return *this;
14155 }
14156
14157 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
14158 {
14159 templateType = templateType_;
14160 return *this;
14161 }
14162
14163 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
14164 {
14165 descriptorSetLayout = descriptorSetLayout_;
14166 return *this;
14167 }
14168
14169 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
14170 {
14171 pipelineBindPoint = pipelineBindPoint_;
14172 return *this;
14173 }
14174
14175 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
14176 {
14177 pipelineLayout = pipelineLayout_;
14178 return *this;
14179 }
14180
14181 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
14182 {
14183 set = set_;
14184 return *this;
14185 }
14186
14187 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
14188 {
14189 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
14190 }
14191
14192 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14193 {
14194 return ( sType == rhs.sType )
14195 && ( pNext == rhs.pNext )
14196 && ( flags == rhs.flags )
14197 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
14198 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
14199 && ( templateType == rhs.templateType )
14200 && ( descriptorSetLayout == rhs.descriptorSetLayout )
14201 && ( pipelineBindPoint == rhs.pipelineBindPoint )
14202 && ( pipelineLayout == rhs.pipelineLayout )
14203 && ( set == rhs.set );
14204 }
14205
14206 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14207 {
14208 return !operator==( rhs );
14209 }
14210
14211 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014212 StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070014213
14214 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014215 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070014216 DescriptorUpdateTemplateCreateFlagsKHR flags;
14217 uint32_t descriptorUpdateEntryCount;
14218 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
14219 DescriptorUpdateTemplateTypeKHR templateType;
14220 DescriptorSetLayout descriptorSetLayout;
14221 PipelineBindPoint pipelineBindPoint;
14222 PipelineLayout pipelineLayout;
14223 uint32_t set;
14224 };
14225 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
14226
Mark Lobodzinski54385432017-05-15 10:27:52 -060014227 enum class ObjectType
14228 {
14229 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
14230 eInstance = VK_OBJECT_TYPE_INSTANCE,
14231 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
14232 eDevice = VK_OBJECT_TYPE_DEVICE,
14233 eQueue = VK_OBJECT_TYPE_QUEUE,
14234 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
14235 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
14236 eFence = VK_OBJECT_TYPE_FENCE,
14237 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
14238 eBuffer = VK_OBJECT_TYPE_BUFFER,
14239 eImage = VK_OBJECT_TYPE_IMAGE,
14240 eEvent = VK_OBJECT_TYPE_EVENT,
14241 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
14242 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
14243 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
14244 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
14245 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
14246 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
14247 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
14248 ePipeline = VK_OBJECT_TYPE_PIPELINE,
14249 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
14250 eSampler = VK_OBJECT_TYPE_SAMPLER,
14251 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
14252 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
14253 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
14254 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
14255 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
14256 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
14257 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
14258 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
14259 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
14260 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
14261 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014262 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
Lenny Komowb79f04a2017-09-18 17:07:00 -060014263 eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014264 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
Mark Lobodzinski54385432017-05-15 10:27:52 -060014265 };
14266
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014267 enum class QueueFlagBits
14268 {
14269 eGraphics = VK_QUEUE_GRAPHICS_BIT,
14270 eCompute = VK_QUEUE_COMPUTE_BIT,
14271 eTransfer = VK_QUEUE_TRANSFER_BIT,
14272 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
14273 };
14274
14275 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
14276
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014277 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014278 {
14279 return QueueFlags( bit0 ) | bit1;
14280 }
14281
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014282 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
14283 {
14284 return ~( QueueFlags( bits ) );
14285 }
14286
14287 template <> struct FlagTraits<QueueFlagBits>
14288 {
14289 enum
14290 {
14291 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
14292 };
14293 };
14294
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014295 struct QueueFamilyProperties
14296 {
14297 operator const VkQueueFamilyProperties&() const
14298 {
14299 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
14300 }
14301
14302 bool operator==( QueueFamilyProperties const& rhs ) const
14303 {
14304 return ( queueFlags == rhs.queueFlags )
14305 && ( queueCount == rhs.queueCount )
14306 && ( timestampValidBits == rhs.timestampValidBits )
14307 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
14308 }
14309
14310 bool operator!=( QueueFamilyProperties const& rhs ) const
14311 {
14312 return !operator==( rhs );
14313 }
14314
14315 QueueFlags queueFlags;
14316 uint32_t queueCount;
14317 uint32_t timestampValidBits;
14318 Extent3D minImageTransferGranularity;
14319 };
14320 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
14321
Mark Young39389872017-01-19 21:10:49 -070014322 struct QueueFamilyProperties2KHR
14323 {
14324 operator const VkQueueFamilyProperties2KHR&() const
14325 {
14326 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
14327 }
14328
14329 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
14330 {
14331 return ( sType == rhs.sType )
14332 && ( pNext == rhs.pNext )
14333 && ( queueFamilyProperties == rhs.queueFamilyProperties );
14334 }
14335
14336 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
14337 {
14338 return !operator==( rhs );
14339 }
14340
14341 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014342 StructureType sType = StructureType::eQueueFamilyProperties2KHR;
Mark Young39389872017-01-19 21:10:49 -070014343
14344 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014345 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070014346 QueueFamilyProperties queueFamilyProperties;
14347 };
14348 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
14349
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014350 enum class MemoryPropertyFlagBits
14351 {
14352 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
14353 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
14354 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
14355 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
14356 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
14357 };
14358
14359 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
14360
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014361 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014362 {
14363 return MemoryPropertyFlags( bit0 ) | bit1;
14364 }
14365
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014366 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
14367 {
14368 return ~( MemoryPropertyFlags( bits ) );
14369 }
14370
14371 template <> struct FlagTraits<MemoryPropertyFlagBits>
14372 {
14373 enum
14374 {
14375 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
14376 };
14377 };
14378
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014379 struct MemoryType
14380 {
14381 operator const VkMemoryType&() const
14382 {
14383 return *reinterpret_cast<const VkMemoryType*>(this);
14384 }
14385
14386 bool operator==( MemoryType const& rhs ) const
14387 {
14388 return ( propertyFlags == rhs.propertyFlags )
14389 && ( heapIndex == rhs.heapIndex );
14390 }
14391
14392 bool operator!=( MemoryType const& rhs ) const
14393 {
14394 return !operator==( rhs );
14395 }
14396
14397 MemoryPropertyFlags propertyFlags;
14398 uint32_t heapIndex;
14399 };
14400 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
14401
14402 enum class MemoryHeapFlagBits
14403 {
Mark Young0f183a82017-02-28 09:58:04 -070014404 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
14405 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014406 };
14407
14408 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
14409
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014410 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014411 {
14412 return MemoryHeapFlags( bit0 ) | bit1;
14413 }
14414
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014415 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
14416 {
14417 return ~( MemoryHeapFlags( bits ) );
14418 }
14419
14420 template <> struct FlagTraits<MemoryHeapFlagBits>
14421 {
14422 enum
14423 {
Mark Young0f183a82017-02-28 09:58:04 -070014424 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014425 };
14426 };
14427
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014428 struct MemoryHeap
14429 {
14430 operator const VkMemoryHeap&() const
14431 {
14432 return *reinterpret_cast<const VkMemoryHeap*>(this);
14433 }
14434
14435 bool operator==( MemoryHeap const& rhs ) const
14436 {
14437 return ( size == rhs.size )
14438 && ( flags == rhs.flags );
14439 }
14440
14441 bool operator!=( MemoryHeap const& rhs ) const
14442 {
14443 return !operator==( rhs );
14444 }
14445
14446 DeviceSize size;
14447 MemoryHeapFlags flags;
14448 };
14449 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
14450
14451 struct PhysicalDeviceMemoryProperties
14452 {
14453 operator const VkPhysicalDeviceMemoryProperties&() const
14454 {
14455 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
14456 }
14457
14458 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
14459 {
14460 return ( memoryTypeCount == rhs.memoryTypeCount )
14461 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
14462 && ( memoryHeapCount == rhs.memoryHeapCount )
14463 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
14464 }
14465
14466 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
14467 {
14468 return !operator==( rhs );
14469 }
14470
14471 uint32_t memoryTypeCount;
14472 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
14473 uint32_t memoryHeapCount;
14474 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
14475 };
14476 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
14477
Mark Young39389872017-01-19 21:10:49 -070014478 struct PhysicalDeviceMemoryProperties2KHR
14479 {
14480 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
14481 {
14482 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
14483 }
14484
14485 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14486 {
14487 return ( sType == rhs.sType )
14488 && ( pNext == rhs.pNext )
14489 && ( memoryProperties == rhs.memoryProperties );
14490 }
14491
14492 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14493 {
14494 return !operator==( rhs );
14495 }
14496
14497 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014498 StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2KHR;
Mark Young39389872017-01-19 21:10:49 -070014499
14500 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014501 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070014502 PhysicalDeviceMemoryProperties memoryProperties;
14503 };
14504 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
14505
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014506 enum class AccessFlagBits
14507 {
14508 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
14509 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
14510 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
14511 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
14512 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
14513 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
14514 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
14515 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
14516 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
14517 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
14518 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
14519 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
14520 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
14521 eHostRead = VK_ACCESS_HOST_READ_BIT,
14522 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
14523 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014524 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
14525 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014526 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
14527 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014528 };
14529
14530 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
14531
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014532 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014533 {
14534 return AccessFlags( bit0 ) | bit1;
14535 }
14536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014537 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
14538 {
14539 return ~( AccessFlags( bits ) );
14540 }
14541
14542 template <> struct FlagTraits<AccessFlagBits>
14543 {
14544 enum
14545 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014546 allFlags = VkFlags(AccessFlagBits::eIndirectCommandRead) | VkFlags(AccessFlagBits::eIndexRead) | VkFlags(AccessFlagBits::eVertexAttributeRead) | VkFlags(AccessFlagBits::eUniformRead) | VkFlags(AccessFlagBits::eInputAttachmentRead) | VkFlags(AccessFlagBits::eShaderRead) | VkFlags(AccessFlagBits::eShaderWrite) | VkFlags(AccessFlagBits::eColorAttachmentRead) | VkFlags(AccessFlagBits::eColorAttachmentWrite) | VkFlags(AccessFlagBits::eDepthStencilAttachmentRead) | VkFlags(AccessFlagBits::eDepthStencilAttachmentWrite) | VkFlags(AccessFlagBits::eTransferRead) | VkFlags(AccessFlagBits::eTransferWrite) | VkFlags(AccessFlagBits::eHostRead) | VkFlags(AccessFlagBits::eHostWrite) | VkFlags(AccessFlagBits::eMemoryRead) | VkFlags(AccessFlagBits::eMemoryWrite) | VkFlags(AccessFlagBits::eCommandProcessReadNVX) | VkFlags(AccessFlagBits::eCommandProcessWriteNVX) | VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014547 };
14548 };
14549
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014550 struct MemoryBarrier
14551 {
14552 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014553 : srcAccessMask( srcAccessMask_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014554 , dstAccessMask( dstAccessMask_ )
14555 {
14556 }
14557
14558 MemoryBarrier( VkMemoryBarrier const & rhs )
14559 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014560 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014561 }
14562
14563 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
14564 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014565 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014566 return *this;
14567 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014568 MemoryBarrier& setPNext( const void* pNext_ )
14569 {
14570 pNext = pNext_;
14571 return *this;
14572 }
14573
14574 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14575 {
14576 srcAccessMask = srcAccessMask_;
14577 return *this;
14578 }
14579
14580 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14581 {
14582 dstAccessMask = dstAccessMask_;
14583 return *this;
14584 }
14585
14586 operator const VkMemoryBarrier&() const
14587 {
14588 return *reinterpret_cast<const VkMemoryBarrier*>(this);
14589 }
14590
14591 bool operator==( MemoryBarrier const& rhs ) const
14592 {
14593 return ( sType == rhs.sType )
14594 && ( pNext == rhs.pNext )
14595 && ( srcAccessMask == rhs.srcAccessMask )
14596 && ( dstAccessMask == rhs.dstAccessMask );
14597 }
14598
14599 bool operator!=( MemoryBarrier const& rhs ) const
14600 {
14601 return !operator==( rhs );
14602 }
14603
14604 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014605 StructureType sType = StructureType::eMemoryBarrier;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014606
14607 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014608 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014609 AccessFlags srcAccessMask;
14610 AccessFlags dstAccessMask;
14611 };
14612 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
14613
14614 struct BufferMemoryBarrier
14615 {
14616 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014617 : srcAccessMask( srcAccessMask_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014618 , dstAccessMask( dstAccessMask_ )
14619 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14620 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14621 , buffer( buffer_ )
14622 , offset( offset_ )
14623 , size( size_ )
14624 {
14625 }
14626
14627 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
14628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014629 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014630 }
14631
14632 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
14633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014634 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014635 return *this;
14636 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014637 BufferMemoryBarrier& setPNext( const void* pNext_ )
14638 {
14639 pNext = pNext_;
14640 return *this;
14641 }
14642
14643 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14644 {
14645 srcAccessMask = srcAccessMask_;
14646 return *this;
14647 }
14648
14649 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14650 {
14651 dstAccessMask = dstAccessMask_;
14652 return *this;
14653 }
14654
14655 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14656 {
14657 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14658 return *this;
14659 }
14660
14661 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14662 {
14663 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14664 return *this;
14665 }
14666
14667 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
14668 {
14669 buffer = buffer_;
14670 return *this;
14671 }
14672
14673 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
14674 {
14675 offset = offset_;
14676 return *this;
14677 }
14678
14679 BufferMemoryBarrier& setSize( DeviceSize size_ )
14680 {
14681 size = size_;
14682 return *this;
14683 }
14684
14685 operator const VkBufferMemoryBarrier&() const
14686 {
14687 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
14688 }
14689
14690 bool operator==( BufferMemoryBarrier const& rhs ) const
14691 {
14692 return ( sType == rhs.sType )
14693 && ( pNext == rhs.pNext )
14694 && ( srcAccessMask == rhs.srcAccessMask )
14695 && ( dstAccessMask == rhs.dstAccessMask )
14696 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14697 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14698 && ( buffer == rhs.buffer )
14699 && ( offset == rhs.offset )
14700 && ( size == rhs.size );
14701 }
14702
14703 bool operator!=( BufferMemoryBarrier const& rhs ) const
14704 {
14705 return !operator==( rhs );
14706 }
14707
14708 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014709 StructureType sType = StructureType::eBufferMemoryBarrier;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014710
14711 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014712 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014713 AccessFlags srcAccessMask;
14714 AccessFlags dstAccessMask;
14715 uint32_t srcQueueFamilyIndex;
14716 uint32_t dstQueueFamilyIndex;
14717 Buffer buffer;
14718 DeviceSize offset;
14719 DeviceSize size;
14720 };
14721 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
14722
14723 enum class BufferUsageFlagBits
14724 {
14725 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
14726 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
14727 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
14728 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
14729 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
14730 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
14731 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
14732 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
14733 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
14734 };
14735
14736 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
14737
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014738 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014739 {
14740 return BufferUsageFlags( bit0 ) | bit1;
14741 }
14742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014743 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
14744 {
14745 return ~( BufferUsageFlags( bits ) );
14746 }
14747
14748 template <> struct FlagTraits<BufferUsageFlagBits>
14749 {
14750 enum
14751 {
14752 allFlags = VkFlags(BufferUsageFlagBits::eTransferSrc) | VkFlags(BufferUsageFlagBits::eTransferDst) | VkFlags(BufferUsageFlagBits::eUniformTexelBuffer) | VkFlags(BufferUsageFlagBits::eStorageTexelBuffer) | VkFlags(BufferUsageFlagBits::eUniformBuffer) | VkFlags(BufferUsageFlagBits::eStorageBuffer) | VkFlags(BufferUsageFlagBits::eIndexBuffer) | VkFlags(BufferUsageFlagBits::eVertexBuffer) | VkFlags(BufferUsageFlagBits::eIndirectBuffer)
14753 };
14754 };
14755
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014756 enum class BufferCreateFlagBits
14757 {
14758 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
14759 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
14760 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
14761 };
14762
14763 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
14764
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014765 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014766 {
14767 return BufferCreateFlags( bit0 ) | bit1;
14768 }
14769
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014770 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
14771 {
14772 return ~( BufferCreateFlags( bits ) );
14773 }
14774
14775 template <> struct FlagTraits<BufferCreateFlagBits>
14776 {
14777 enum
14778 {
14779 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
14780 };
14781 };
14782
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014783 struct BufferCreateInfo
14784 {
14785 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014786 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014787 , size( size_ )
14788 , usage( usage_ )
14789 , sharingMode( sharingMode_ )
14790 , queueFamilyIndexCount( queueFamilyIndexCount_ )
14791 , pQueueFamilyIndices( pQueueFamilyIndices_ )
14792 {
14793 }
14794
14795 BufferCreateInfo( VkBufferCreateInfo const & rhs )
14796 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014797 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014798 }
14799
14800 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
14801 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014802 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014803 return *this;
14804 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014805 BufferCreateInfo& setPNext( const void* pNext_ )
14806 {
14807 pNext = pNext_;
14808 return *this;
14809 }
14810
14811 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
14812 {
14813 flags = flags_;
14814 return *this;
14815 }
14816
14817 BufferCreateInfo& setSize( DeviceSize size_ )
14818 {
14819 size = size_;
14820 return *this;
14821 }
14822
14823 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
14824 {
14825 usage = usage_;
14826 return *this;
14827 }
14828
14829 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
14830 {
14831 sharingMode = sharingMode_;
14832 return *this;
14833 }
14834
14835 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
14836 {
14837 queueFamilyIndexCount = queueFamilyIndexCount_;
14838 return *this;
14839 }
14840
14841 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
14842 {
14843 pQueueFamilyIndices = pQueueFamilyIndices_;
14844 return *this;
14845 }
14846
14847 operator const VkBufferCreateInfo&() const
14848 {
14849 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
14850 }
14851
14852 bool operator==( BufferCreateInfo const& rhs ) const
14853 {
14854 return ( sType == rhs.sType )
14855 && ( pNext == rhs.pNext )
14856 && ( flags == rhs.flags )
14857 && ( size == rhs.size )
14858 && ( usage == rhs.usage )
14859 && ( sharingMode == rhs.sharingMode )
14860 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
14861 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
14862 }
14863
14864 bool operator!=( BufferCreateInfo const& rhs ) const
14865 {
14866 return !operator==( rhs );
14867 }
14868
14869 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014870 StructureType sType = StructureType::eBufferCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014871
14872 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014873 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014874 BufferCreateFlags flags;
14875 DeviceSize size;
14876 BufferUsageFlags usage;
14877 SharingMode sharingMode;
14878 uint32_t queueFamilyIndexCount;
14879 const uint32_t* pQueueFamilyIndices;
14880 };
14881 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
14882
14883 enum class ShaderStageFlagBits
14884 {
14885 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
14886 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
14887 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
14888 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
14889 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
14890 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
14891 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
14892 eAll = VK_SHADER_STAGE_ALL
14893 };
14894
14895 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
14896
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014897 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014898 {
14899 return ShaderStageFlags( bit0 ) | bit1;
14900 }
14901
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014902 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14903 {
14904 return ~( ShaderStageFlags( bits ) );
14905 }
14906
14907 template <> struct FlagTraits<ShaderStageFlagBits>
14908 {
14909 enum
14910 {
14911 allFlags = VkFlags(ShaderStageFlagBits::eVertex) | VkFlags(ShaderStageFlagBits::eTessellationControl) | VkFlags(ShaderStageFlagBits::eTessellationEvaluation) | VkFlags(ShaderStageFlagBits::eGeometry) | VkFlags(ShaderStageFlagBits::eFragment) | VkFlags(ShaderStageFlagBits::eCompute) | VkFlags(ShaderStageFlagBits::eAllGraphics) | VkFlags(ShaderStageFlagBits::eAll)
14912 };
14913 };
14914
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014915 struct DescriptorSetLayoutBinding
14916 {
14917 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14918 : binding( binding_ )
14919 , descriptorType( descriptorType_ )
14920 , descriptorCount( descriptorCount_ )
14921 , stageFlags( stageFlags_ )
14922 , pImmutableSamplers( pImmutableSamplers_ )
14923 {
14924 }
14925
14926 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014928 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014929 }
14930
14931 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14932 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014933 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014934 return *this;
14935 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014936 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14937 {
14938 binding = binding_;
14939 return *this;
14940 }
14941
14942 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14943 {
14944 descriptorType = descriptorType_;
14945 return *this;
14946 }
14947
14948 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14949 {
14950 descriptorCount = descriptorCount_;
14951 return *this;
14952 }
14953
14954 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14955 {
14956 stageFlags = stageFlags_;
14957 return *this;
14958 }
14959
14960 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14961 {
14962 pImmutableSamplers = pImmutableSamplers_;
14963 return *this;
14964 }
14965
14966 operator const VkDescriptorSetLayoutBinding&() const
14967 {
14968 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14969 }
14970
14971 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14972 {
14973 return ( binding == rhs.binding )
14974 && ( descriptorType == rhs.descriptorType )
14975 && ( descriptorCount == rhs.descriptorCount )
14976 && ( stageFlags == rhs.stageFlags )
14977 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14978 }
14979
14980 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14981 {
14982 return !operator==( rhs );
14983 }
14984
14985 uint32_t binding;
14986 DescriptorType descriptorType;
14987 uint32_t descriptorCount;
14988 ShaderStageFlags stageFlags;
14989 const Sampler* pImmutableSamplers;
14990 };
14991 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14992
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014993 struct PipelineShaderStageCreateInfo
14994 {
14995 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070014996 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014997 , stage( stage_ )
14998 , module( module_ )
14999 , pName( pName_ )
15000 , pSpecializationInfo( pSpecializationInfo_ )
15001 {
15002 }
15003
15004 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
15005 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015006 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015007 }
15008
15009 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
15010 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015011 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015012 return *this;
15013 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015014 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
15015 {
15016 pNext = pNext_;
15017 return *this;
15018 }
15019
15020 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
15021 {
15022 flags = flags_;
15023 return *this;
15024 }
15025
15026 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
15027 {
15028 stage = stage_;
15029 return *this;
15030 }
15031
15032 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
15033 {
15034 module = module_;
15035 return *this;
15036 }
15037
15038 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
15039 {
15040 pName = pName_;
15041 return *this;
15042 }
15043
15044 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
15045 {
15046 pSpecializationInfo = pSpecializationInfo_;
15047 return *this;
15048 }
15049
15050 operator const VkPipelineShaderStageCreateInfo&() const
15051 {
15052 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
15053 }
15054
15055 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
15056 {
15057 return ( sType == rhs.sType )
15058 && ( pNext == rhs.pNext )
15059 && ( flags == rhs.flags )
15060 && ( stage == rhs.stage )
15061 && ( module == rhs.module )
15062 && ( pName == rhs.pName )
15063 && ( pSpecializationInfo == rhs.pSpecializationInfo );
15064 }
15065
15066 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
15067 {
15068 return !operator==( rhs );
15069 }
15070
15071 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015072 StructureType sType = StructureType::ePipelineShaderStageCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015073
15074 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015075 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015076 PipelineShaderStageCreateFlags flags;
15077 ShaderStageFlagBits stage;
15078 ShaderModule module;
15079 const char* pName;
15080 const SpecializationInfo* pSpecializationInfo;
15081 };
15082 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
15083
15084 struct PushConstantRange
15085 {
15086 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
15087 : stageFlags( stageFlags_ )
15088 , offset( offset_ )
15089 , size( size_ )
15090 {
15091 }
15092
15093 PushConstantRange( VkPushConstantRange const & rhs )
15094 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015095 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015096 }
15097
15098 PushConstantRange& operator=( VkPushConstantRange const & rhs )
15099 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015100 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015101 return *this;
15102 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015103 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
15104 {
15105 stageFlags = stageFlags_;
15106 return *this;
15107 }
15108
15109 PushConstantRange& setOffset( uint32_t offset_ )
15110 {
15111 offset = offset_;
15112 return *this;
15113 }
15114
15115 PushConstantRange& setSize( uint32_t size_ )
15116 {
15117 size = size_;
15118 return *this;
15119 }
15120
15121 operator const VkPushConstantRange&() const
15122 {
15123 return *reinterpret_cast<const VkPushConstantRange*>(this);
15124 }
15125
15126 bool operator==( PushConstantRange const& rhs ) const
15127 {
15128 return ( stageFlags == rhs.stageFlags )
15129 && ( offset == rhs.offset )
15130 && ( size == rhs.size );
15131 }
15132
15133 bool operator!=( PushConstantRange const& rhs ) const
15134 {
15135 return !operator==( rhs );
15136 }
15137
15138 ShaderStageFlags stageFlags;
15139 uint32_t offset;
15140 uint32_t size;
15141 };
15142 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
15143
15144 struct PipelineLayoutCreateInfo
15145 {
15146 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015147 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015148 , setLayoutCount( setLayoutCount_ )
15149 , pSetLayouts( pSetLayouts_ )
15150 , pushConstantRangeCount( pushConstantRangeCount_ )
15151 , pPushConstantRanges( pPushConstantRanges_ )
15152 {
15153 }
15154
15155 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
15156 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015157 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015158 }
15159
15160 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
15161 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015162 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015163 return *this;
15164 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015165 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
15166 {
15167 pNext = pNext_;
15168 return *this;
15169 }
15170
15171 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
15172 {
15173 flags = flags_;
15174 return *this;
15175 }
15176
15177 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
15178 {
15179 setLayoutCount = setLayoutCount_;
15180 return *this;
15181 }
15182
15183 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
15184 {
15185 pSetLayouts = pSetLayouts_;
15186 return *this;
15187 }
15188
15189 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
15190 {
15191 pushConstantRangeCount = pushConstantRangeCount_;
15192 return *this;
15193 }
15194
15195 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
15196 {
15197 pPushConstantRanges = pPushConstantRanges_;
15198 return *this;
15199 }
15200
15201 operator const VkPipelineLayoutCreateInfo&() const
15202 {
15203 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
15204 }
15205
15206 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
15207 {
15208 return ( sType == rhs.sType )
15209 && ( pNext == rhs.pNext )
15210 && ( flags == rhs.flags )
15211 && ( setLayoutCount == rhs.setLayoutCount )
15212 && ( pSetLayouts == rhs.pSetLayouts )
15213 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
15214 && ( pPushConstantRanges == rhs.pPushConstantRanges );
15215 }
15216
15217 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
15218 {
15219 return !operator==( rhs );
15220 }
15221
15222 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015223 StructureType sType = StructureType::ePipelineLayoutCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015224
15225 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015226 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015227 PipelineLayoutCreateFlags flags;
15228 uint32_t setLayoutCount;
15229 const DescriptorSetLayout* pSetLayouts;
15230 uint32_t pushConstantRangeCount;
15231 const PushConstantRange* pPushConstantRanges;
15232 };
15233 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
15234
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060015235 struct ShaderStatisticsInfoAMD
15236 {
15237 operator const VkShaderStatisticsInfoAMD&() const
15238 {
15239 return *reinterpret_cast<const VkShaderStatisticsInfoAMD*>(this);
15240 }
15241
15242 bool operator==( ShaderStatisticsInfoAMD const& rhs ) const
15243 {
15244 return ( shaderStageMask == rhs.shaderStageMask )
15245 && ( resourceUsage == rhs.resourceUsage )
15246 && ( numPhysicalVgprs == rhs.numPhysicalVgprs )
15247 && ( numPhysicalSgprs == rhs.numPhysicalSgprs )
15248 && ( numAvailableVgprs == rhs.numAvailableVgprs )
15249 && ( numAvailableSgprs == rhs.numAvailableSgprs )
15250 && ( memcmp( computeWorkGroupSize, rhs.computeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 );
15251 }
15252
15253 bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const
15254 {
15255 return !operator==( rhs );
15256 }
15257
15258 ShaderStageFlags shaderStageMask;
15259 ShaderResourceUsageAMD resourceUsage;
15260 uint32_t numPhysicalVgprs;
15261 uint32_t numPhysicalSgprs;
15262 uint32_t numAvailableVgprs;
15263 uint32_t numAvailableSgprs;
15264 uint32_t computeWorkGroupSize[3];
15265 };
15266 static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" );
15267
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015268 enum class ImageUsageFlagBits
15269 {
15270 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
15271 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
15272 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
15273 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
15274 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
15275 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
15276 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
15277 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
15278 };
15279
15280 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
15281
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015282 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015283 {
15284 return ImageUsageFlags( bit0 ) | bit1;
15285 }
15286
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015287 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
15288 {
15289 return ~( ImageUsageFlags( bits ) );
15290 }
15291
15292 template <> struct FlagTraits<ImageUsageFlagBits>
15293 {
15294 enum
15295 {
15296 allFlags = VkFlags(ImageUsageFlagBits::eTransferSrc) | VkFlags(ImageUsageFlagBits::eTransferDst) | VkFlags(ImageUsageFlagBits::eSampled) | VkFlags(ImageUsageFlagBits::eStorage) | VkFlags(ImageUsageFlagBits::eColorAttachment) | VkFlags(ImageUsageFlagBits::eDepthStencilAttachment) | VkFlags(ImageUsageFlagBits::eTransientAttachment) | VkFlags(ImageUsageFlagBits::eInputAttachment)
15297 };
15298 };
15299
Mark Lobodzinski54385432017-05-15 10:27:52 -060015300 struct SharedPresentSurfaceCapabilitiesKHR
15301 {
15302 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
15303 {
15304 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
15305 }
15306
15307 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15308 {
15309 return ( sType == rhs.sType )
15310 && ( pNext == rhs.pNext )
15311 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
15312 }
15313
15314 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15315 {
15316 return !operator==( rhs );
15317 }
15318
15319 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015320 StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR;
Mark Lobodzinski54385432017-05-15 10:27:52 -060015321
15322 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015323 void* pNext = nullptr;
Mark Lobodzinski54385432017-05-15 10:27:52 -060015324 ImageUsageFlags sharedPresentSupportedUsageFlags;
15325 };
15326 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
15327
Lenny Komowb79f04a2017-09-18 17:07:00 -060015328 struct ImageViewUsageCreateInfoKHR
15329 {
15330 ImageViewUsageCreateInfoKHR( ImageUsageFlags usage_ = ImageUsageFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015331 : usage( usage_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060015332 {
15333 }
15334
15335 ImageViewUsageCreateInfoKHR( VkImageViewUsageCreateInfoKHR const & rhs )
15336 {
15337 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15338 }
15339
15340 ImageViewUsageCreateInfoKHR& operator=( VkImageViewUsageCreateInfoKHR const & rhs )
15341 {
15342 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15343 return *this;
15344 }
15345 ImageViewUsageCreateInfoKHR& setPNext( const void* pNext_ )
15346 {
15347 pNext = pNext_;
15348 return *this;
15349 }
15350
15351 ImageViewUsageCreateInfoKHR& setUsage( ImageUsageFlags usage_ )
15352 {
15353 usage = usage_;
15354 return *this;
15355 }
15356
15357 operator const VkImageViewUsageCreateInfoKHR&() const
15358 {
15359 return *reinterpret_cast<const VkImageViewUsageCreateInfoKHR*>(this);
15360 }
15361
15362 bool operator==( ImageViewUsageCreateInfoKHR const& rhs ) const
15363 {
15364 return ( sType == rhs.sType )
15365 && ( pNext == rhs.pNext )
15366 && ( usage == rhs.usage );
15367 }
15368
15369 bool operator!=( ImageViewUsageCreateInfoKHR const& rhs ) const
15370 {
15371 return !operator==( rhs );
15372 }
15373
15374 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015375 StructureType sType = StructureType::eImageViewUsageCreateInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060015376
15377 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015378 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060015379 ImageUsageFlags usage;
15380 };
15381 static_assert( sizeof( ImageViewUsageCreateInfoKHR ) == sizeof( VkImageViewUsageCreateInfoKHR ), "struct and wrapper have different size!" );
15382
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015383 enum class ImageCreateFlagBits
15384 {
15385 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
15386 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
15387 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
15388 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070015389 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015390 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060015391 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015392 eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,
15393 eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,
15394 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,
15395 eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR,
15396 eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015397 };
15398
15399 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
15400
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015401 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015402 {
15403 return ImageCreateFlags( bit0 ) | bit1;
15404 }
15405
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015406 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
15407 {
15408 return ~( ImageCreateFlags( bits ) );
15409 }
15410
15411 template <> struct FlagTraits<ImageCreateFlagBits>
15412 {
15413 enum
15414 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015415 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eBindSfrKHX) | VkFlags(ImageCreateFlagBits::e2DArrayCompatibleKHR) | VkFlags(ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) | VkFlags(ImageCreateFlagBits::eExtendedUsageKHR) | VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) | VkFlags(ImageCreateFlagBits::eDisjointKHR) | VkFlags(ImageCreateFlagBits::eAliasKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015416 };
15417 };
15418
Mark Young39389872017-01-19 21:10:49 -070015419 struct PhysicalDeviceImageFormatInfo2KHR
15420 {
15421 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015422 : format( format_ )
Mark Young39389872017-01-19 21:10:49 -070015423 , type( type_ )
15424 , tiling( tiling_ )
15425 , usage( usage_ )
15426 , flags( flags_ )
15427 {
15428 }
15429
15430 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15431 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015432 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015433 }
15434
15435 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15436 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015437 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015438 return *this;
15439 }
Mark Young39389872017-01-19 21:10:49 -070015440 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
15441 {
15442 pNext = pNext_;
15443 return *this;
15444 }
15445
15446 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
15447 {
15448 format = format_;
15449 return *this;
15450 }
15451
15452 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
15453 {
15454 type = type_;
15455 return *this;
15456 }
15457
15458 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
15459 {
15460 tiling = tiling_;
15461 return *this;
15462 }
15463
15464 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
15465 {
15466 usage = usage_;
15467 return *this;
15468 }
15469
15470 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
15471 {
15472 flags = flags_;
15473 return *this;
15474 }
15475
15476 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
15477 {
15478 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
15479 }
15480
15481 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15482 {
15483 return ( sType == rhs.sType )
15484 && ( pNext == rhs.pNext )
15485 && ( format == rhs.format )
15486 && ( type == rhs.type )
15487 && ( tiling == rhs.tiling )
15488 && ( usage == rhs.usage )
15489 && ( flags == rhs.flags );
15490 }
15491
15492 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15493 {
15494 return !operator==( rhs );
15495 }
15496
15497 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015498 StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2KHR;
Mark Young39389872017-01-19 21:10:49 -070015499
15500 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015501 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070015502 Format format;
15503 ImageType type;
15504 ImageTiling tiling;
15505 ImageUsageFlags usage;
15506 ImageCreateFlags flags;
15507 };
15508 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
15509
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015510 enum class PipelineCreateFlagBits
15511 {
15512 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
15513 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015514 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
15515 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
15516 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015517 };
15518
15519 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
15520
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015521 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015522 {
15523 return PipelineCreateFlags( bit0 ) | bit1;
15524 }
15525
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015526 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
15527 {
15528 return ~( PipelineCreateFlags( bits ) );
15529 }
15530
15531 template <> struct FlagTraits<PipelineCreateFlagBits>
15532 {
15533 enum
15534 {
Mark Young0f183a82017-02-28 09:58:04 -070015535 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015536 };
15537 };
15538
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015539 struct ComputePipelineCreateInfo
15540 {
15541 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015542 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015543 , stage( stage_ )
15544 , layout( layout_ )
15545 , basePipelineHandle( basePipelineHandle_ )
15546 , basePipelineIndex( basePipelineIndex_ )
15547 {
15548 }
15549
15550 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
15551 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015552 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015553 }
15554
15555 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
15556 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015557 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015558 return *this;
15559 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015560 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
15561 {
15562 pNext = pNext_;
15563 return *this;
15564 }
15565
15566 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
15567 {
15568 flags = flags_;
15569 return *this;
15570 }
15571
15572 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
15573 {
15574 stage = stage_;
15575 return *this;
15576 }
15577
15578 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
15579 {
15580 layout = layout_;
15581 return *this;
15582 }
15583
15584 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
15585 {
15586 basePipelineHandle = basePipelineHandle_;
15587 return *this;
15588 }
15589
15590 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
15591 {
15592 basePipelineIndex = basePipelineIndex_;
15593 return *this;
15594 }
15595
15596 operator const VkComputePipelineCreateInfo&() const
15597 {
15598 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
15599 }
15600
15601 bool operator==( ComputePipelineCreateInfo const& rhs ) const
15602 {
15603 return ( sType == rhs.sType )
15604 && ( pNext == rhs.pNext )
15605 && ( flags == rhs.flags )
15606 && ( stage == rhs.stage )
15607 && ( layout == rhs.layout )
15608 && ( basePipelineHandle == rhs.basePipelineHandle )
15609 && ( basePipelineIndex == rhs.basePipelineIndex );
15610 }
15611
15612 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
15613 {
15614 return !operator==( rhs );
15615 }
15616
15617 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015618 StructureType sType = StructureType::eComputePipelineCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015619
15620 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015621 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015622 PipelineCreateFlags flags;
15623 PipelineShaderStageCreateInfo stage;
15624 PipelineLayout layout;
15625 Pipeline basePipelineHandle;
15626 int32_t basePipelineIndex;
15627 };
15628 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
15629
15630 enum class ColorComponentFlagBits
15631 {
15632 eR = VK_COLOR_COMPONENT_R_BIT,
15633 eG = VK_COLOR_COMPONENT_G_BIT,
15634 eB = VK_COLOR_COMPONENT_B_BIT,
15635 eA = VK_COLOR_COMPONENT_A_BIT
15636 };
15637
15638 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
15639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015640 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015641 {
15642 return ColorComponentFlags( bit0 ) | bit1;
15643 }
15644
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015645 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
15646 {
15647 return ~( ColorComponentFlags( bits ) );
15648 }
15649
15650 template <> struct FlagTraits<ColorComponentFlagBits>
15651 {
15652 enum
15653 {
15654 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
15655 };
15656 };
15657
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015658 struct PipelineColorBlendAttachmentState
15659 {
15660 PipelineColorBlendAttachmentState( Bool32 blendEnable_ = 0, BlendFactor srcColorBlendFactor_ = BlendFactor::eZero, BlendFactor dstColorBlendFactor_ = BlendFactor::eZero, BlendOp colorBlendOp_ = BlendOp::eAdd, BlendFactor srcAlphaBlendFactor_ = BlendFactor::eZero, BlendFactor dstAlphaBlendFactor_ = BlendFactor::eZero, BlendOp alphaBlendOp_ = BlendOp::eAdd, ColorComponentFlags colorWriteMask_ = ColorComponentFlags() )
15661 : blendEnable( blendEnable_ )
15662 , srcColorBlendFactor( srcColorBlendFactor_ )
15663 , dstColorBlendFactor( dstColorBlendFactor_ )
15664 , colorBlendOp( colorBlendOp_ )
15665 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
15666 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
15667 , alphaBlendOp( alphaBlendOp_ )
15668 , colorWriteMask( colorWriteMask_ )
15669 {
15670 }
15671
15672 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
15673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015674 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015675 }
15676
15677 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
15678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015679 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015680 return *this;
15681 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015682 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
15683 {
15684 blendEnable = blendEnable_;
15685 return *this;
15686 }
15687
15688 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
15689 {
15690 srcColorBlendFactor = srcColorBlendFactor_;
15691 return *this;
15692 }
15693
15694 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
15695 {
15696 dstColorBlendFactor = dstColorBlendFactor_;
15697 return *this;
15698 }
15699
15700 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
15701 {
15702 colorBlendOp = colorBlendOp_;
15703 return *this;
15704 }
15705
15706 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
15707 {
15708 srcAlphaBlendFactor = srcAlphaBlendFactor_;
15709 return *this;
15710 }
15711
15712 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
15713 {
15714 dstAlphaBlendFactor = dstAlphaBlendFactor_;
15715 return *this;
15716 }
15717
15718 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
15719 {
15720 alphaBlendOp = alphaBlendOp_;
15721 return *this;
15722 }
15723
15724 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
15725 {
15726 colorWriteMask = colorWriteMask_;
15727 return *this;
15728 }
15729
15730 operator const VkPipelineColorBlendAttachmentState&() const
15731 {
15732 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
15733 }
15734
15735 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
15736 {
15737 return ( blendEnable == rhs.blendEnable )
15738 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
15739 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
15740 && ( colorBlendOp == rhs.colorBlendOp )
15741 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
15742 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
15743 && ( alphaBlendOp == rhs.alphaBlendOp )
15744 && ( colorWriteMask == rhs.colorWriteMask );
15745 }
15746
15747 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
15748 {
15749 return !operator==( rhs );
15750 }
15751
15752 Bool32 blendEnable;
15753 BlendFactor srcColorBlendFactor;
15754 BlendFactor dstColorBlendFactor;
15755 BlendOp colorBlendOp;
15756 BlendFactor srcAlphaBlendFactor;
15757 BlendFactor dstAlphaBlendFactor;
15758 BlendOp alphaBlendOp;
15759 ColorComponentFlags colorWriteMask;
15760 };
15761 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
15762
15763 struct PipelineColorBlendStateCreateInfo
15764 {
15765 PipelineColorBlendStateCreateInfo( PipelineColorBlendStateCreateFlags flags_ = PipelineColorBlendStateCreateFlags(), Bool32 logicOpEnable_ = 0, LogicOp logicOp_ = LogicOp::eClear, uint32_t attachmentCount_ = 0, const PipelineColorBlendAttachmentState* pAttachments_ = nullptr, std::array<float,4> const& blendConstants_ = { { 0, 0, 0, 0 } } )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015766 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015767 , logicOpEnable( logicOpEnable_ )
15768 , logicOp( logicOp_ )
15769 , attachmentCount( attachmentCount_ )
15770 , pAttachments( pAttachments_ )
15771 {
15772 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15773 }
15774
15775 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
15776 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015777 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015778 }
15779
15780 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
15781 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015782 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015783 return *this;
15784 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015785 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
15786 {
15787 pNext = pNext_;
15788 return *this;
15789 }
15790
15791 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
15792 {
15793 flags = flags_;
15794 return *this;
15795 }
15796
15797 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
15798 {
15799 logicOpEnable = logicOpEnable_;
15800 return *this;
15801 }
15802
15803 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
15804 {
15805 logicOp = logicOp_;
15806 return *this;
15807 }
15808
15809 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
15810 {
15811 attachmentCount = attachmentCount_;
15812 return *this;
15813 }
15814
15815 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
15816 {
15817 pAttachments = pAttachments_;
15818 return *this;
15819 }
15820
15821 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
15822 {
15823 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15824 return *this;
15825 }
15826
15827 operator const VkPipelineColorBlendStateCreateInfo&() const
15828 {
15829 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
15830 }
15831
15832 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
15833 {
15834 return ( sType == rhs.sType )
15835 && ( pNext == rhs.pNext )
15836 && ( flags == rhs.flags )
15837 && ( logicOpEnable == rhs.logicOpEnable )
15838 && ( logicOp == rhs.logicOp )
15839 && ( attachmentCount == rhs.attachmentCount )
15840 && ( pAttachments == rhs.pAttachments )
15841 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
15842 }
15843
15844 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
15845 {
15846 return !operator==( rhs );
15847 }
15848
15849 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015850 StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015851
15852 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015853 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015854 PipelineColorBlendStateCreateFlags flags;
15855 Bool32 logicOpEnable;
15856 LogicOp logicOp;
15857 uint32_t attachmentCount;
15858 const PipelineColorBlendAttachmentState* pAttachments;
15859 float blendConstants[4];
15860 };
15861 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
15862
15863 enum class FenceCreateFlagBits
15864 {
15865 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
15866 };
15867
15868 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
15869
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015870 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015871 {
15872 return FenceCreateFlags( bit0 ) | bit1;
15873 }
15874
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015875 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
15876 {
15877 return ~( FenceCreateFlags( bits ) );
15878 }
15879
15880 template <> struct FlagTraits<FenceCreateFlagBits>
15881 {
15882 enum
15883 {
15884 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
15885 };
15886 };
15887
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015888 struct FenceCreateInfo
15889 {
15890 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015891 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015892 {
15893 }
15894
15895 FenceCreateInfo( VkFenceCreateInfo const & rhs )
15896 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015897 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015898 }
15899
15900 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
15901 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015902 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015903 return *this;
15904 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015905 FenceCreateInfo& setPNext( const void* pNext_ )
15906 {
15907 pNext = pNext_;
15908 return *this;
15909 }
15910
15911 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
15912 {
15913 flags = flags_;
15914 return *this;
15915 }
15916
15917 operator const VkFenceCreateInfo&() const
15918 {
15919 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
15920 }
15921
15922 bool operator==( FenceCreateInfo const& rhs ) const
15923 {
15924 return ( sType == rhs.sType )
15925 && ( pNext == rhs.pNext )
15926 && ( flags == rhs.flags );
15927 }
15928
15929 bool operator!=( FenceCreateInfo const& rhs ) const
15930 {
15931 return !operator==( rhs );
15932 }
15933
15934 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015935 StructureType sType = StructureType::eFenceCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015936
15937 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070015938 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015939 FenceCreateFlags flags;
15940 };
15941 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
15942
15943 enum class FormatFeatureFlagBits
15944 {
15945 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
15946 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
15947 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
15948 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
15949 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
15950 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
15951 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
15952 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
15953 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
15954 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
15955 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
15956 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
15957 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070015958 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
15959 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015960 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015961 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,
15962 eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
15963 eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
15964 eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,
15965 eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
15966 eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
15967 eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
15968 eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015969 };
15970
15971 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
15972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015973 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015974 {
15975 return FormatFeatureFlags( bit0 ) | bit1;
15976 }
15977
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015978 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
15979 {
15980 return ~( FormatFeatureFlags( bits ) );
15981 }
15982
15983 template <> struct FlagTraits<FormatFeatureFlagBits>
15984 {
15985 enum
15986 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015987 allFlags = VkFlags(FormatFeatureFlagBits::eSampledImage) | VkFlags(FormatFeatureFlagBits::eStorageImage) | VkFlags(FormatFeatureFlagBits::eStorageImageAtomic) | VkFlags(FormatFeatureFlagBits::eUniformTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBufferAtomic) | VkFlags(FormatFeatureFlagBits::eVertexBuffer) | VkFlags(FormatFeatureFlagBits::eColorAttachment) | VkFlags(FormatFeatureFlagBits::eColorAttachmentBlend) | VkFlags(FormatFeatureFlagBits::eDepthStencilAttachment) | VkFlags(FormatFeatureFlagBits::eBlitSrc) | VkFlags(FormatFeatureFlagBits::eBlitDst) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterLinear) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterCubicIMG) | VkFlags(FormatFeatureFlagBits::eTransferSrcKHR) | VkFlags(FormatFeatureFlagBits::eTransferDstKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) | VkFlags(FormatFeatureFlagBits::eMidpointChromaSamplesKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) | VkFlags(FormatFeatureFlagBits::eDisjointKHR) | VkFlags(FormatFeatureFlagBits::eCositedChromaSamplesKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015988 };
15989 };
15990
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015991 struct FormatProperties
15992 {
15993 operator const VkFormatProperties&() const
15994 {
15995 return *reinterpret_cast<const VkFormatProperties*>(this);
15996 }
15997
15998 bool operator==( FormatProperties const& rhs ) const
15999 {
16000 return ( linearTilingFeatures == rhs.linearTilingFeatures )
16001 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
16002 && ( bufferFeatures == rhs.bufferFeatures );
16003 }
16004
16005 bool operator!=( FormatProperties const& rhs ) const
16006 {
16007 return !operator==( rhs );
16008 }
16009
16010 FormatFeatureFlags linearTilingFeatures;
16011 FormatFeatureFlags optimalTilingFeatures;
16012 FormatFeatureFlags bufferFeatures;
16013 };
16014 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
16015
Mark Young39389872017-01-19 21:10:49 -070016016 struct FormatProperties2KHR
16017 {
16018 operator const VkFormatProperties2KHR&() const
16019 {
16020 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
16021 }
16022
16023 bool operator==( FormatProperties2KHR const& rhs ) const
16024 {
16025 return ( sType == rhs.sType )
16026 && ( pNext == rhs.pNext )
16027 && ( formatProperties == rhs.formatProperties );
16028 }
16029
16030 bool operator!=( FormatProperties2KHR const& rhs ) const
16031 {
16032 return !operator==( rhs );
16033 }
16034
16035 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016036 StructureType sType = StructureType::eFormatProperties2KHR;
Mark Young39389872017-01-19 21:10:49 -070016037
16038 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016039 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070016040 FormatProperties formatProperties;
16041 };
16042 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
16043
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016044 enum class QueryControlFlagBits
16045 {
16046 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
16047 };
16048
16049 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
16050
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016051 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016052 {
16053 return QueryControlFlags( bit0 ) | bit1;
16054 }
16055
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016056 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
16057 {
16058 return ~( QueryControlFlags( bits ) );
16059 }
16060
16061 template <> struct FlagTraits<QueryControlFlagBits>
16062 {
16063 enum
16064 {
16065 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
16066 };
16067 };
16068
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016069 enum class QueryResultFlagBits
16070 {
16071 e64 = VK_QUERY_RESULT_64_BIT,
16072 eWait = VK_QUERY_RESULT_WAIT_BIT,
16073 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
16074 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
16075 };
16076
16077 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
16078
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016079 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016080 {
16081 return QueryResultFlags( bit0 ) | bit1;
16082 }
16083
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016084 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
16085 {
16086 return ~( QueryResultFlags( bits ) );
16087 }
16088
16089 template <> struct FlagTraits<QueryResultFlagBits>
16090 {
16091 enum
16092 {
16093 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
16094 };
16095 };
16096
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016097 enum class CommandBufferUsageFlagBits
16098 {
16099 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
16100 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
16101 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
16102 };
16103
16104 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
16105
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016106 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016107 {
16108 return CommandBufferUsageFlags( bit0 ) | bit1;
16109 }
16110
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016111 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
16112 {
16113 return ~( CommandBufferUsageFlags( bits ) );
16114 }
16115
16116 template <> struct FlagTraits<CommandBufferUsageFlagBits>
16117 {
16118 enum
16119 {
16120 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
16121 };
16122 };
16123
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016124 enum class QueryPipelineStatisticFlagBits
16125 {
16126 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
16127 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
16128 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
16129 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
16130 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
16131 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
16132 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
16133 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
16134 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
16135 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
16136 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
16137 };
16138
16139 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
16140
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016141 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016142 {
16143 return QueryPipelineStatisticFlags( bit0 ) | bit1;
16144 }
16145
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016146 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
16147 {
16148 return ~( QueryPipelineStatisticFlags( bits ) );
16149 }
16150
16151 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
16152 {
16153 enum
16154 {
16155 allFlags = VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyVertices) | VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eVertexShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eClippingInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eClippingPrimitives) | VkFlags(QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) | VkFlags(QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) | VkFlags(QueryPipelineStatisticFlagBits::eComputeShaderInvocations)
16156 };
16157 };
16158
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016159 struct CommandBufferInheritanceInfo
16160 {
16161 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016162 : renderPass( renderPass_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016163 , subpass( subpass_ )
16164 , framebuffer( framebuffer_ )
16165 , occlusionQueryEnable( occlusionQueryEnable_ )
16166 , queryFlags( queryFlags_ )
16167 , pipelineStatistics( pipelineStatistics_ )
16168 {
16169 }
16170
16171 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
16172 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016173 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016174 }
16175
16176 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
16177 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016178 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016179 return *this;
16180 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016181 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
16182 {
16183 pNext = pNext_;
16184 return *this;
16185 }
16186
16187 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
16188 {
16189 renderPass = renderPass_;
16190 return *this;
16191 }
16192
16193 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
16194 {
16195 subpass = subpass_;
16196 return *this;
16197 }
16198
16199 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
16200 {
16201 framebuffer = framebuffer_;
16202 return *this;
16203 }
16204
16205 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
16206 {
16207 occlusionQueryEnable = occlusionQueryEnable_;
16208 return *this;
16209 }
16210
16211 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
16212 {
16213 queryFlags = queryFlags_;
16214 return *this;
16215 }
16216
16217 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16218 {
16219 pipelineStatistics = pipelineStatistics_;
16220 return *this;
16221 }
16222
16223 operator const VkCommandBufferInheritanceInfo&() const
16224 {
16225 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
16226 }
16227
16228 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
16229 {
16230 return ( sType == rhs.sType )
16231 && ( pNext == rhs.pNext )
16232 && ( renderPass == rhs.renderPass )
16233 && ( subpass == rhs.subpass )
16234 && ( framebuffer == rhs.framebuffer )
16235 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
16236 && ( queryFlags == rhs.queryFlags )
16237 && ( pipelineStatistics == rhs.pipelineStatistics );
16238 }
16239
16240 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
16241 {
16242 return !operator==( rhs );
16243 }
16244
16245 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016246 StructureType sType = StructureType::eCommandBufferInheritanceInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016247
16248 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016249 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016250 RenderPass renderPass;
16251 uint32_t subpass;
16252 Framebuffer framebuffer;
16253 Bool32 occlusionQueryEnable;
16254 QueryControlFlags queryFlags;
16255 QueryPipelineStatisticFlags pipelineStatistics;
16256 };
16257 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
16258
16259 struct CommandBufferBeginInfo
16260 {
16261 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016262 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016263 , pInheritanceInfo( pInheritanceInfo_ )
16264 {
16265 }
16266
16267 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
16268 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016269 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016270 }
16271
16272 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
16273 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016274 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016275 return *this;
16276 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016277 CommandBufferBeginInfo& setPNext( const void* pNext_ )
16278 {
16279 pNext = pNext_;
16280 return *this;
16281 }
16282
16283 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
16284 {
16285 flags = flags_;
16286 return *this;
16287 }
16288
16289 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
16290 {
16291 pInheritanceInfo = pInheritanceInfo_;
16292 return *this;
16293 }
16294
16295 operator const VkCommandBufferBeginInfo&() const
16296 {
16297 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
16298 }
16299
16300 bool operator==( CommandBufferBeginInfo const& rhs ) const
16301 {
16302 return ( sType == rhs.sType )
16303 && ( pNext == rhs.pNext )
16304 && ( flags == rhs.flags )
16305 && ( pInheritanceInfo == rhs.pInheritanceInfo );
16306 }
16307
16308 bool operator!=( CommandBufferBeginInfo const& rhs ) const
16309 {
16310 return !operator==( rhs );
16311 }
16312
16313 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016314 StructureType sType = StructureType::eCommandBufferBeginInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016315
16316 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016317 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016318 CommandBufferUsageFlags flags;
16319 const CommandBufferInheritanceInfo* pInheritanceInfo;
16320 };
16321 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
16322
16323 struct QueryPoolCreateInfo
16324 {
16325 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016326 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016327 , queryType( queryType_ )
16328 , queryCount( queryCount_ )
16329 , pipelineStatistics( pipelineStatistics_ )
16330 {
16331 }
16332
16333 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
16334 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016335 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016336 }
16337
16338 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
16339 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016340 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016341 return *this;
16342 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016343 QueryPoolCreateInfo& setPNext( const void* pNext_ )
16344 {
16345 pNext = pNext_;
16346 return *this;
16347 }
16348
16349 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
16350 {
16351 flags = flags_;
16352 return *this;
16353 }
16354
16355 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
16356 {
16357 queryType = queryType_;
16358 return *this;
16359 }
16360
16361 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
16362 {
16363 queryCount = queryCount_;
16364 return *this;
16365 }
16366
16367 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16368 {
16369 pipelineStatistics = pipelineStatistics_;
16370 return *this;
16371 }
16372
16373 operator const VkQueryPoolCreateInfo&() const
16374 {
16375 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
16376 }
16377
16378 bool operator==( QueryPoolCreateInfo const& rhs ) const
16379 {
16380 return ( sType == rhs.sType )
16381 && ( pNext == rhs.pNext )
16382 && ( flags == rhs.flags )
16383 && ( queryType == rhs.queryType )
16384 && ( queryCount == rhs.queryCount )
16385 && ( pipelineStatistics == rhs.pipelineStatistics );
16386 }
16387
16388 bool operator!=( QueryPoolCreateInfo const& rhs ) const
16389 {
16390 return !operator==( rhs );
16391 }
16392
16393 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016394 StructureType sType = StructureType::eQueryPoolCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016395
16396 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016397 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016398 QueryPoolCreateFlags flags;
16399 QueryType queryType;
16400 uint32_t queryCount;
16401 QueryPipelineStatisticFlags pipelineStatistics;
16402 };
16403 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
16404
16405 enum class ImageAspectFlagBits
16406 {
16407 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
16408 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
16409 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060016410 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
16411 ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
16412 ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,
16413 ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016414 };
16415
16416 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
16417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016418 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016419 {
16420 return ImageAspectFlags( bit0 ) | bit1;
16421 }
16422
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016423 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
16424 {
16425 return ~( ImageAspectFlags( bits ) );
16426 }
16427
16428 template <> struct FlagTraits<ImageAspectFlagBits>
16429 {
16430 enum
16431 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060016432 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata) | VkFlags(ImageAspectFlagBits::ePlane0KHR) | VkFlags(ImageAspectFlagBits::ePlane1KHR) | VkFlags(ImageAspectFlagBits::ePlane2KHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016433 };
16434 };
16435
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016436 struct ImageSubresource
16437 {
16438 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
16439 : aspectMask( aspectMask_ )
16440 , mipLevel( mipLevel_ )
16441 , arrayLayer( arrayLayer_ )
16442 {
16443 }
16444
16445 ImageSubresource( VkImageSubresource const & rhs )
16446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016447 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016448 }
16449
16450 ImageSubresource& operator=( VkImageSubresource const & rhs )
16451 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016452 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016453 return *this;
16454 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016455 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
16456 {
16457 aspectMask = aspectMask_;
16458 return *this;
16459 }
16460
16461 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
16462 {
16463 mipLevel = mipLevel_;
16464 return *this;
16465 }
16466
16467 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
16468 {
16469 arrayLayer = arrayLayer_;
16470 return *this;
16471 }
16472
16473 operator const VkImageSubresource&() const
16474 {
16475 return *reinterpret_cast<const VkImageSubresource*>(this);
16476 }
16477
16478 bool operator==( ImageSubresource const& rhs ) const
16479 {
16480 return ( aspectMask == rhs.aspectMask )
16481 && ( mipLevel == rhs.mipLevel )
16482 && ( arrayLayer == rhs.arrayLayer );
16483 }
16484
16485 bool operator!=( ImageSubresource const& rhs ) const
16486 {
16487 return !operator==( rhs );
16488 }
16489
16490 ImageAspectFlags aspectMask;
16491 uint32_t mipLevel;
16492 uint32_t arrayLayer;
16493 };
16494 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
16495
16496 struct ImageSubresourceLayers
16497 {
16498 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16499 : aspectMask( aspectMask_ )
16500 , mipLevel( mipLevel_ )
16501 , baseArrayLayer( baseArrayLayer_ )
16502 , layerCount( layerCount_ )
16503 {
16504 }
16505
16506 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
16507 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016508 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016509 }
16510
16511 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
16512 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016513 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016514 return *this;
16515 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016516 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
16517 {
16518 aspectMask = aspectMask_;
16519 return *this;
16520 }
16521
16522 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
16523 {
16524 mipLevel = mipLevel_;
16525 return *this;
16526 }
16527
16528 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16529 {
16530 baseArrayLayer = baseArrayLayer_;
16531 return *this;
16532 }
16533
16534 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
16535 {
16536 layerCount = layerCount_;
16537 return *this;
16538 }
16539
16540 operator const VkImageSubresourceLayers&() const
16541 {
16542 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
16543 }
16544
16545 bool operator==( ImageSubresourceLayers const& rhs ) const
16546 {
16547 return ( aspectMask == rhs.aspectMask )
16548 && ( mipLevel == rhs.mipLevel )
16549 && ( baseArrayLayer == rhs.baseArrayLayer )
16550 && ( layerCount == rhs.layerCount );
16551 }
16552
16553 bool operator!=( ImageSubresourceLayers const& rhs ) const
16554 {
16555 return !operator==( rhs );
16556 }
16557
16558 ImageAspectFlags aspectMask;
16559 uint32_t mipLevel;
16560 uint32_t baseArrayLayer;
16561 uint32_t layerCount;
16562 };
16563 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
16564
16565 struct ImageSubresourceRange
16566 {
16567 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16568 : aspectMask( aspectMask_ )
16569 , baseMipLevel( baseMipLevel_ )
16570 , levelCount( levelCount_ )
16571 , baseArrayLayer( baseArrayLayer_ )
16572 , layerCount( layerCount_ )
16573 {
16574 }
16575
16576 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
16577 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016578 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016579 }
16580
16581 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
16582 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016583 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016584 return *this;
16585 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016586 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
16587 {
16588 aspectMask = aspectMask_;
16589 return *this;
16590 }
16591
16592 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
16593 {
16594 baseMipLevel = baseMipLevel_;
16595 return *this;
16596 }
16597
16598 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
16599 {
16600 levelCount = levelCount_;
16601 return *this;
16602 }
16603
16604 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16605 {
16606 baseArrayLayer = baseArrayLayer_;
16607 return *this;
16608 }
16609
16610 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
16611 {
16612 layerCount = layerCount_;
16613 return *this;
16614 }
16615
16616 operator const VkImageSubresourceRange&() const
16617 {
16618 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
16619 }
16620
16621 bool operator==( ImageSubresourceRange const& rhs ) const
16622 {
16623 return ( aspectMask == rhs.aspectMask )
16624 && ( baseMipLevel == rhs.baseMipLevel )
16625 && ( levelCount == rhs.levelCount )
16626 && ( baseArrayLayer == rhs.baseArrayLayer )
16627 && ( layerCount == rhs.layerCount );
16628 }
16629
16630 bool operator!=( ImageSubresourceRange const& rhs ) const
16631 {
16632 return !operator==( rhs );
16633 }
16634
16635 ImageAspectFlags aspectMask;
16636 uint32_t baseMipLevel;
16637 uint32_t levelCount;
16638 uint32_t baseArrayLayer;
16639 uint32_t layerCount;
16640 };
16641 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
16642
16643 struct ImageMemoryBarrier
16644 {
16645 ImageMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), ImageLayout oldLayout_ = ImageLayout::eUndefined, ImageLayout newLayout_ = ImageLayout::eUndefined, uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Image image_ = Image(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016646 : srcAccessMask( srcAccessMask_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016647 , dstAccessMask( dstAccessMask_ )
16648 , oldLayout( oldLayout_ )
16649 , newLayout( newLayout_ )
16650 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
16651 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
16652 , image( image_ )
16653 , subresourceRange( subresourceRange_ )
16654 {
16655 }
16656
16657 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
16658 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016659 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016660 }
16661
16662 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
16663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016664 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016665 return *this;
16666 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016667 ImageMemoryBarrier& setPNext( const void* pNext_ )
16668 {
16669 pNext = pNext_;
16670 return *this;
16671 }
16672
16673 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
16674 {
16675 srcAccessMask = srcAccessMask_;
16676 return *this;
16677 }
16678
16679 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
16680 {
16681 dstAccessMask = dstAccessMask_;
16682 return *this;
16683 }
16684
16685 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
16686 {
16687 oldLayout = oldLayout_;
16688 return *this;
16689 }
16690
16691 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
16692 {
16693 newLayout = newLayout_;
16694 return *this;
16695 }
16696
16697 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
16698 {
16699 srcQueueFamilyIndex = srcQueueFamilyIndex_;
16700 return *this;
16701 }
16702
16703 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
16704 {
16705 dstQueueFamilyIndex = dstQueueFamilyIndex_;
16706 return *this;
16707 }
16708
16709 ImageMemoryBarrier& setImage( Image image_ )
16710 {
16711 image = image_;
16712 return *this;
16713 }
16714
16715 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16716 {
16717 subresourceRange = subresourceRange_;
16718 return *this;
16719 }
16720
16721 operator const VkImageMemoryBarrier&() const
16722 {
16723 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
16724 }
16725
16726 bool operator==( ImageMemoryBarrier const& rhs ) const
16727 {
16728 return ( sType == rhs.sType )
16729 && ( pNext == rhs.pNext )
16730 && ( srcAccessMask == rhs.srcAccessMask )
16731 && ( dstAccessMask == rhs.dstAccessMask )
16732 && ( oldLayout == rhs.oldLayout )
16733 && ( newLayout == rhs.newLayout )
16734 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
16735 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
16736 && ( image == rhs.image )
16737 && ( subresourceRange == rhs.subresourceRange );
16738 }
16739
16740 bool operator!=( ImageMemoryBarrier const& rhs ) const
16741 {
16742 return !operator==( rhs );
16743 }
16744
16745 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016746 StructureType sType = StructureType::eImageMemoryBarrier;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016747
16748 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016749 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016750 AccessFlags srcAccessMask;
16751 AccessFlags dstAccessMask;
16752 ImageLayout oldLayout;
16753 ImageLayout newLayout;
16754 uint32_t srcQueueFamilyIndex;
16755 uint32_t dstQueueFamilyIndex;
16756 Image image;
16757 ImageSubresourceRange subresourceRange;
16758 };
16759 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
16760
16761 struct ImageViewCreateInfo
16762 {
16763 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016764 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016765 , image( image_ )
16766 , viewType( viewType_ )
16767 , format( format_ )
16768 , components( components_ )
16769 , subresourceRange( subresourceRange_ )
16770 {
16771 }
16772
16773 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
16774 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016775 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016776 }
16777
16778 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
16779 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016780 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016781 return *this;
16782 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016783 ImageViewCreateInfo& setPNext( const void* pNext_ )
16784 {
16785 pNext = pNext_;
16786 return *this;
16787 }
16788
16789 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
16790 {
16791 flags = flags_;
16792 return *this;
16793 }
16794
16795 ImageViewCreateInfo& setImage( Image image_ )
16796 {
16797 image = image_;
16798 return *this;
16799 }
16800
16801 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
16802 {
16803 viewType = viewType_;
16804 return *this;
16805 }
16806
16807 ImageViewCreateInfo& setFormat( Format format_ )
16808 {
16809 format = format_;
16810 return *this;
16811 }
16812
16813 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
16814 {
16815 components = components_;
16816 return *this;
16817 }
16818
16819 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16820 {
16821 subresourceRange = subresourceRange_;
16822 return *this;
16823 }
16824
16825 operator const VkImageViewCreateInfo&() const
16826 {
16827 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
16828 }
16829
16830 bool operator==( ImageViewCreateInfo const& rhs ) const
16831 {
16832 return ( sType == rhs.sType )
16833 && ( pNext == rhs.pNext )
16834 && ( flags == rhs.flags )
16835 && ( image == rhs.image )
16836 && ( viewType == rhs.viewType )
16837 && ( format == rhs.format )
16838 && ( components == rhs.components )
16839 && ( subresourceRange == rhs.subresourceRange );
16840 }
16841
16842 bool operator!=( ImageViewCreateInfo const& rhs ) const
16843 {
16844 return !operator==( rhs );
16845 }
16846
16847 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016848 StructureType sType = StructureType::eImageViewCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016849
16850 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070016851 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016852 ImageViewCreateFlags flags;
16853 Image image;
16854 ImageViewType viewType;
16855 Format format;
16856 ComponentMapping components;
16857 ImageSubresourceRange subresourceRange;
16858 };
16859 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
16860
16861 struct ImageCopy
16862 {
16863 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16864 : srcSubresource( srcSubresource_ )
16865 , srcOffset( srcOffset_ )
16866 , dstSubresource( dstSubresource_ )
16867 , dstOffset( dstOffset_ )
16868 , extent( extent_ )
16869 {
16870 }
16871
16872 ImageCopy( VkImageCopy const & rhs )
16873 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016874 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016875 }
16876
16877 ImageCopy& operator=( VkImageCopy const & rhs )
16878 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016879 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016880 return *this;
16881 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016882 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16883 {
16884 srcSubresource = srcSubresource_;
16885 return *this;
16886 }
16887
16888 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
16889 {
16890 srcOffset = srcOffset_;
16891 return *this;
16892 }
16893
16894 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16895 {
16896 dstSubresource = dstSubresource_;
16897 return *this;
16898 }
16899
16900 ImageCopy& setDstOffset( Offset3D dstOffset_ )
16901 {
16902 dstOffset = dstOffset_;
16903 return *this;
16904 }
16905
16906 ImageCopy& setExtent( Extent3D extent_ )
16907 {
16908 extent = extent_;
16909 return *this;
16910 }
16911
16912 operator const VkImageCopy&() const
16913 {
16914 return *reinterpret_cast<const VkImageCopy*>(this);
16915 }
16916
16917 bool operator==( ImageCopy const& rhs ) const
16918 {
16919 return ( srcSubresource == rhs.srcSubresource )
16920 && ( srcOffset == rhs.srcOffset )
16921 && ( dstSubresource == rhs.dstSubresource )
16922 && ( dstOffset == rhs.dstOffset )
16923 && ( extent == rhs.extent );
16924 }
16925
16926 bool operator!=( ImageCopy const& rhs ) const
16927 {
16928 return !operator==( rhs );
16929 }
16930
16931 ImageSubresourceLayers srcSubresource;
16932 Offset3D srcOffset;
16933 ImageSubresourceLayers dstSubresource;
16934 Offset3D dstOffset;
16935 Extent3D extent;
16936 };
16937 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
16938
16939 struct ImageBlit
16940 {
16941 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
16942 : srcSubresource( srcSubresource_ )
16943 , dstSubresource( dstSubresource_ )
16944 {
16945 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16946 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16947 }
16948
16949 ImageBlit( VkImageBlit const & rhs )
16950 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016951 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016952 }
16953
16954 ImageBlit& operator=( VkImageBlit const & rhs )
16955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016956 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016957 return *this;
16958 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016959 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16960 {
16961 srcSubresource = srcSubresource_;
16962 return *this;
16963 }
16964
16965 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
16966 {
16967 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16968 return *this;
16969 }
16970
16971 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16972 {
16973 dstSubresource = dstSubresource_;
16974 return *this;
16975 }
16976
16977 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
16978 {
16979 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16980 return *this;
16981 }
16982
16983 operator const VkImageBlit&() const
16984 {
16985 return *reinterpret_cast<const VkImageBlit*>(this);
16986 }
16987
16988 bool operator==( ImageBlit const& rhs ) const
16989 {
16990 return ( srcSubresource == rhs.srcSubresource )
16991 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16992 && ( dstSubresource == rhs.dstSubresource )
16993 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16994 }
16995
16996 bool operator!=( ImageBlit const& rhs ) const
16997 {
16998 return !operator==( rhs );
16999 }
17000
17001 ImageSubresourceLayers srcSubresource;
17002 Offset3D srcOffsets[2];
17003 ImageSubresourceLayers dstSubresource;
17004 Offset3D dstOffsets[2];
17005 };
17006 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
17007
17008 struct BufferImageCopy
17009 {
17010 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
17011 : bufferOffset( bufferOffset_ )
17012 , bufferRowLength( bufferRowLength_ )
17013 , bufferImageHeight( bufferImageHeight_ )
17014 , imageSubresource( imageSubresource_ )
17015 , imageOffset( imageOffset_ )
17016 , imageExtent( imageExtent_ )
17017 {
17018 }
17019
17020 BufferImageCopy( VkBufferImageCopy const & rhs )
17021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017022 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017023 }
17024
17025 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
17026 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017027 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017028 return *this;
17029 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017030 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
17031 {
17032 bufferOffset = bufferOffset_;
17033 return *this;
17034 }
17035
17036 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
17037 {
17038 bufferRowLength = bufferRowLength_;
17039 return *this;
17040 }
17041
17042 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
17043 {
17044 bufferImageHeight = bufferImageHeight_;
17045 return *this;
17046 }
17047
17048 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
17049 {
17050 imageSubresource = imageSubresource_;
17051 return *this;
17052 }
17053
17054 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
17055 {
17056 imageOffset = imageOffset_;
17057 return *this;
17058 }
17059
17060 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
17061 {
17062 imageExtent = imageExtent_;
17063 return *this;
17064 }
17065
17066 operator const VkBufferImageCopy&() const
17067 {
17068 return *reinterpret_cast<const VkBufferImageCopy*>(this);
17069 }
17070
17071 bool operator==( BufferImageCopy const& rhs ) const
17072 {
17073 return ( bufferOffset == rhs.bufferOffset )
17074 && ( bufferRowLength == rhs.bufferRowLength )
17075 && ( bufferImageHeight == rhs.bufferImageHeight )
17076 && ( imageSubresource == rhs.imageSubresource )
17077 && ( imageOffset == rhs.imageOffset )
17078 && ( imageExtent == rhs.imageExtent );
17079 }
17080
17081 bool operator!=( BufferImageCopy const& rhs ) const
17082 {
17083 return !operator==( rhs );
17084 }
17085
17086 DeviceSize bufferOffset;
17087 uint32_t bufferRowLength;
17088 uint32_t bufferImageHeight;
17089 ImageSubresourceLayers imageSubresource;
17090 Offset3D imageOffset;
17091 Extent3D imageExtent;
17092 };
17093 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
17094
17095 struct ImageResolve
17096 {
17097 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
17098 : srcSubresource( srcSubresource_ )
17099 , srcOffset( srcOffset_ )
17100 , dstSubresource( dstSubresource_ )
17101 , dstOffset( dstOffset_ )
17102 , extent( extent_ )
17103 {
17104 }
17105
17106 ImageResolve( VkImageResolve const & rhs )
17107 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017108 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017109 }
17110
17111 ImageResolve& operator=( VkImageResolve const & rhs )
17112 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017113 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017114 return *this;
17115 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017116 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
17117 {
17118 srcSubresource = srcSubresource_;
17119 return *this;
17120 }
17121
17122 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
17123 {
17124 srcOffset = srcOffset_;
17125 return *this;
17126 }
17127
17128 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
17129 {
17130 dstSubresource = dstSubresource_;
17131 return *this;
17132 }
17133
17134 ImageResolve& setDstOffset( Offset3D dstOffset_ )
17135 {
17136 dstOffset = dstOffset_;
17137 return *this;
17138 }
17139
17140 ImageResolve& setExtent( Extent3D extent_ )
17141 {
17142 extent = extent_;
17143 return *this;
17144 }
17145
17146 operator const VkImageResolve&() const
17147 {
17148 return *reinterpret_cast<const VkImageResolve*>(this);
17149 }
17150
17151 bool operator==( ImageResolve const& rhs ) const
17152 {
17153 return ( srcSubresource == rhs.srcSubresource )
17154 && ( srcOffset == rhs.srcOffset )
17155 && ( dstSubresource == rhs.dstSubresource )
17156 && ( dstOffset == rhs.dstOffset )
17157 && ( extent == rhs.extent );
17158 }
17159
17160 bool operator!=( ImageResolve const& rhs ) const
17161 {
17162 return !operator==( rhs );
17163 }
17164
17165 ImageSubresourceLayers srcSubresource;
17166 Offset3D srcOffset;
17167 ImageSubresourceLayers dstSubresource;
17168 Offset3D dstOffset;
17169 Extent3D extent;
17170 };
17171 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
17172
17173 struct ClearAttachment
17174 {
17175 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
17176 : aspectMask( aspectMask_ )
17177 , colorAttachment( colorAttachment_ )
17178 , clearValue( clearValue_ )
17179 {
17180 }
17181
17182 ClearAttachment( VkClearAttachment const & rhs )
17183 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017184 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017185 }
17186
17187 ClearAttachment& operator=( VkClearAttachment const & rhs )
17188 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017189 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017190 return *this;
17191 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017192 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
17193 {
17194 aspectMask = aspectMask_;
17195 return *this;
17196 }
17197
17198 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
17199 {
17200 colorAttachment = colorAttachment_;
17201 return *this;
17202 }
17203
17204 ClearAttachment& setClearValue( ClearValue clearValue_ )
17205 {
17206 clearValue = clearValue_;
17207 return *this;
17208 }
17209
17210 operator const VkClearAttachment&() const
17211 {
17212 return *reinterpret_cast<const VkClearAttachment*>(this);
17213 }
17214
17215 ImageAspectFlags aspectMask;
17216 uint32_t colorAttachment;
17217 ClearValue clearValue;
17218 };
17219 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
17220
Lenny Komowb79f04a2017-09-18 17:07:00 -060017221 struct InputAttachmentAspectReferenceKHR
17222 {
17223 InputAttachmentAspectReferenceKHR( uint32_t subpass_ = 0, uint32_t inputAttachmentIndex_ = 0, ImageAspectFlags aspectMask_ = ImageAspectFlags() )
17224 : subpass( subpass_ )
17225 , inputAttachmentIndex( inputAttachmentIndex_ )
17226 , aspectMask( aspectMask_ )
17227 {
17228 }
17229
17230 InputAttachmentAspectReferenceKHR( VkInputAttachmentAspectReferenceKHR const & rhs )
17231 {
17232 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17233 }
17234
17235 InputAttachmentAspectReferenceKHR& operator=( VkInputAttachmentAspectReferenceKHR const & rhs )
17236 {
17237 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17238 return *this;
17239 }
17240 InputAttachmentAspectReferenceKHR& setSubpass( uint32_t subpass_ )
17241 {
17242 subpass = subpass_;
17243 return *this;
17244 }
17245
17246 InputAttachmentAspectReferenceKHR& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
17247 {
17248 inputAttachmentIndex = inputAttachmentIndex_;
17249 return *this;
17250 }
17251
17252 InputAttachmentAspectReferenceKHR& setAspectMask( ImageAspectFlags aspectMask_ )
17253 {
17254 aspectMask = aspectMask_;
17255 return *this;
17256 }
17257
17258 operator const VkInputAttachmentAspectReferenceKHR&() const
17259 {
17260 return *reinterpret_cast<const VkInputAttachmentAspectReferenceKHR*>(this);
17261 }
17262
17263 bool operator==( InputAttachmentAspectReferenceKHR const& rhs ) const
17264 {
17265 return ( subpass == rhs.subpass )
17266 && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
17267 && ( aspectMask == rhs.aspectMask );
17268 }
17269
17270 bool operator!=( InputAttachmentAspectReferenceKHR const& rhs ) const
17271 {
17272 return !operator==( rhs );
17273 }
17274
17275 uint32_t subpass;
17276 uint32_t inputAttachmentIndex;
17277 ImageAspectFlags aspectMask;
17278 };
17279 static_assert( sizeof( InputAttachmentAspectReferenceKHR ) == sizeof( VkInputAttachmentAspectReferenceKHR ), "struct and wrapper have different size!" );
17280
17281 struct RenderPassInputAttachmentAspectCreateInfoKHR
17282 {
17283 RenderPassInputAttachmentAspectCreateInfoKHR( uint32_t aspectReferenceCount_ = 0, const InputAttachmentAspectReferenceKHR* pAspectReferences_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017284 : aspectReferenceCount( aspectReferenceCount_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060017285 , pAspectReferences( pAspectReferences_ )
17286 {
17287 }
17288
17289 RenderPassInputAttachmentAspectCreateInfoKHR( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17290 {
17291 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17292 }
17293
17294 RenderPassInputAttachmentAspectCreateInfoKHR& operator=( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17295 {
17296 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17297 return *this;
17298 }
17299 RenderPassInputAttachmentAspectCreateInfoKHR& setPNext( const void* pNext_ )
17300 {
17301 pNext = pNext_;
17302 return *this;
17303 }
17304
17305 RenderPassInputAttachmentAspectCreateInfoKHR& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
17306 {
17307 aspectReferenceCount = aspectReferenceCount_;
17308 return *this;
17309 }
17310
17311 RenderPassInputAttachmentAspectCreateInfoKHR& setPAspectReferences( const InputAttachmentAspectReferenceKHR* pAspectReferences_ )
17312 {
17313 pAspectReferences = pAspectReferences_;
17314 return *this;
17315 }
17316
17317 operator const VkRenderPassInputAttachmentAspectCreateInfoKHR&() const
17318 {
17319 return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfoKHR*>(this);
17320 }
17321
17322 bool operator==( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17323 {
17324 return ( sType == rhs.sType )
17325 && ( pNext == rhs.pNext )
17326 && ( aspectReferenceCount == rhs.aspectReferenceCount )
17327 && ( pAspectReferences == rhs.pAspectReferences );
17328 }
17329
17330 bool operator!=( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17331 {
17332 return !operator==( rhs );
17333 }
17334
17335 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017336 StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060017337
17338 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017339 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060017340 uint32_t aspectReferenceCount;
17341 const InputAttachmentAspectReferenceKHR* pAspectReferences;
17342 };
17343 static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfoKHR ), "struct and wrapper have different size!" );
17344
17345 struct BindImagePlaneMemoryInfoKHR
17346 {
17347 BindImagePlaneMemoryInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017348 : planeAspect( planeAspect_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060017349 {
17350 }
17351
17352 BindImagePlaneMemoryInfoKHR( VkBindImagePlaneMemoryInfoKHR const & rhs )
17353 {
17354 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17355 }
17356
17357 BindImagePlaneMemoryInfoKHR& operator=( VkBindImagePlaneMemoryInfoKHR const & rhs )
17358 {
17359 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17360 return *this;
17361 }
17362 BindImagePlaneMemoryInfoKHR& setPNext( const void* pNext_ )
17363 {
17364 pNext = pNext_;
17365 return *this;
17366 }
17367
17368 BindImagePlaneMemoryInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17369 {
17370 planeAspect = planeAspect_;
17371 return *this;
17372 }
17373
17374 operator const VkBindImagePlaneMemoryInfoKHR&() const
17375 {
17376 return *reinterpret_cast<const VkBindImagePlaneMemoryInfoKHR*>(this);
17377 }
17378
17379 bool operator==( BindImagePlaneMemoryInfoKHR const& rhs ) const
17380 {
17381 return ( sType == rhs.sType )
17382 && ( pNext == rhs.pNext )
17383 && ( planeAspect == rhs.planeAspect );
17384 }
17385
17386 bool operator!=( BindImagePlaneMemoryInfoKHR const& rhs ) const
17387 {
17388 return !operator==( rhs );
17389 }
17390
17391 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017392 StructureType sType = StructureType::eBindImagePlaneMemoryInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060017393
17394 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017395 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060017396 ImageAspectFlagBits planeAspect;
17397 };
17398 static_assert( sizeof( BindImagePlaneMemoryInfoKHR ) == sizeof( VkBindImagePlaneMemoryInfoKHR ), "struct and wrapper have different size!" );
17399
17400 struct ImagePlaneMemoryRequirementsInfoKHR
17401 {
17402 ImagePlaneMemoryRequirementsInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017403 : planeAspect( planeAspect_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060017404 {
17405 }
17406
17407 ImagePlaneMemoryRequirementsInfoKHR( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17408 {
17409 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17410 }
17411
17412 ImagePlaneMemoryRequirementsInfoKHR& operator=( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17413 {
17414 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17415 return *this;
17416 }
17417 ImagePlaneMemoryRequirementsInfoKHR& setPNext( const void* pNext_ )
17418 {
17419 pNext = pNext_;
17420 return *this;
17421 }
17422
17423 ImagePlaneMemoryRequirementsInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17424 {
17425 planeAspect = planeAspect_;
17426 return *this;
17427 }
17428
17429 operator const VkImagePlaneMemoryRequirementsInfoKHR&() const
17430 {
17431 return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfoKHR*>(this);
17432 }
17433
17434 bool operator==( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17435 {
17436 return ( sType == rhs.sType )
17437 && ( pNext == rhs.pNext )
17438 && ( planeAspect == rhs.planeAspect );
17439 }
17440
17441 bool operator!=( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17442 {
17443 return !operator==( rhs );
17444 }
17445
17446 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017447 StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060017448
17449 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017450 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060017451 ImageAspectFlagBits planeAspect;
17452 };
17453 static_assert( sizeof( ImagePlaneMemoryRequirementsInfoKHR ) == sizeof( VkImagePlaneMemoryRequirementsInfoKHR ), "struct and wrapper have different size!" );
17454
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017455 enum class SparseImageFormatFlagBits
17456 {
17457 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
17458 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
17459 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
17460 };
17461
17462 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
17463
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017464 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017465 {
17466 return SparseImageFormatFlags( bit0 ) | bit1;
17467 }
17468
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017469 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
17470 {
17471 return ~( SparseImageFormatFlags( bits ) );
17472 }
17473
17474 template <> struct FlagTraits<SparseImageFormatFlagBits>
17475 {
17476 enum
17477 {
17478 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
17479 };
17480 };
17481
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017482 struct SparseImageFormatProperties
17483 {
17484 operator const VkSparseImageFormatProperties&() const
17485 {
17486 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
17487 }
17488
17489 bool operator==( SparseImageFormatProperties const& rhs ) const
17490 {
17491 return ( aspectMask == rhs.aspectMask )
17492 && ( imageGranularity == rhs.imageGranularity )
17493 && ( flags == rhs.flags );
17494 }
17495
17496 bool operator!=( SparseImageFormatProperties const& rhs ) const
17497 {
17498 return !operator==( rhs );
17499 }
17500
17501 ImageAspectFlags aspectMask;
17502 Extent3D imageGranularity;
17503 SparseImageFormatFlags flags;
17504 };
17505 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
17506
17507 struct SparseImageMemoryRequirements
17508 {
17509 operator const VkSparseImageMemoryRequirements&() const
17510 {
17511 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
17512 }
17513
17514 bool operator==( SparseImageMemoryRequirements const& rhs ) const
17515 {
17516 return ( formatProperties == rhs.formatProperties )
17517 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
17518 && ( imageMipTailSize == rhs.imageMipTailSize )
17519 && ( imageMipTailOffset == rhs.imageMipTailOffset )
17520 && ( imageMipTailStride == rhs.imageMipTailStride );
17521 }
17522
17523 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
17524 {
17525 return !operator==( rhs );
17526 }
17527
17528 SparseImageFormatProperties formatProperties;
17529 uint32_t imageMipTailFirstLod;
17530 DeviceSize imageMipTailSize;
17531 DeviceSize imageMipTailOffset;
17532 DeviceSize imageMipTailStride;
17533 };
17534 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
17535
Mark Young39389872017-01-19 21:10:49 -070017536 struct SparseImageFormatProperties2KHR
17537 {
17538 operator const VkSparseImageFormatProperties2KHR&() const
17539 {
17540 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
17541 }
17542
17543 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
17544 {
17545 return ( sType == rhs.sType )
17546 && ( pNext == rhs.pNext )
17547 && ( properties == rhs.properties );
17548 }
17549
17550 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
17551 {
17552 return !operator==( rhs );
17553 }
17554
17555 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017556 StructureType sType = StructureType::eSparseImageFormatProperties2KHR;
Mark Young39389872017-01-19 21:10:49 -070017557
17558 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017559 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070017560 SparseImageFormatProperties properties;
17561 };
17562 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17563
Mark Youngabc2d6e2017-07-07 07:59:56 -060017564 struct SparseImageMemoryRequirements2KHR
17565 {
17566 operator const VkSparseImageMemoryRequirements2KHR&() const
17567 {
17568 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
17569 }
17570
17571 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
17572 {
17573 return ( sType == rhs.sType )
17574 && ( pNext == rhs.pNext )
17575 && ( memoryRequirements == rhs.memoryRequirements );
17576 }
17577
17578 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
17579 {
17580 return !operator==( rhs );
17581 }
17582
17583 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017584 StructureType sType = StructureType::eSparseImageMemoryRequirements2KHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060017585
17586 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017587 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060017588 SparseImageMemoryRequirements memoryRequirements;
17589 };
17590 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
17591
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017592 enum class SparseMemoryBindFlagBits
17593 {
17594 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
17595 };
17596
17597 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
17598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017599 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017600 {
17601 return SparseMemoryBindFlags( bit0 ) | bit1;
17602 }
17603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017604 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
17605 {
17606 return ~( SparseMemoryBindFlags( bits ) );
17607 }
17608
17609 template <> struct FlagTraits<SparseMemoryBindFlagBits>
17610 {
17611 enum
17612 {
17613 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
17614 };
17615 };
17616
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017617 struct SparseMemoryBind
17618 {
17619 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17620 : resourceOffset( resourceOffset_ )
17621 , size( size_ )
17622 , memory( memory_ )
17623 , memoryOffset( memoryOffset_ )
17624 , flags( flags_ )
17625 {
17626 }
17627
17628 SparseMemoryBind( VkSparseMemoryBind const & rhs )
17629 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017630 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017631 }
17632
17633 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
17634 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017635 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017636 return *this;
17637 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017638 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
17639 {
17640 resourceOffset = resourceOffset_;
17641 return *this;
17642 }
17643
17644 SparseMemoryBind& setSize( DeviceSize size_ )
17645 {
17646 size = size_;
17647 return *this;
17648 }
17649
17650 SparseMemoryBind& setMemory( DeviceMemory memory_ )
17651 {
17652 memory = memory_;
17653 return *this;
17654 }
17655
17656 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17657 {
17658 memoryOffset = memoryOffset_;
17659 return *this;
17660 }
17661
17662 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17663 {
17664 flags = flags_;
17665 return *this;
17666 }
17667
17668 operator const VkSparseMemoryBind&() const
17669 {
17670 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
17671 }
17672
17673 bool operator==( SparseMemoryBind const& rhs ) const
17674 {
17675 return ( resourceOffset == rhs.resourceOffset )
17676 && ( size == rhs.size )
17677 && ( memory == rhs.memory )
17678 && ( memoryOffset == rhs.memoryOffset )
17679 && ( flags == rhs.flags );
17680 }
17681
17682 bool operator!=( SparseMemoryBind const& rhs ) const
17683 {
17684 return !operator==( rhs );
17685 }
17686
17687 DeviceSize resourceOffset;
17688 DeviceSize size;
17689 DeviceMemory memory;
17690 DeviceSize memoryOffset;
17691 SparseMemoryBindFlags flags;
17692 };
17693 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
17694
17695 struct SparseImageMemoryBind
17696 {
17697 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17698 : subresource( subresource_ )
17699 , offset( offset_ )
17700 , extent( extent_ )
17701 , memory( memory_ )
17702 , memoryOffset( memoryOffset_ )
17703 , flags( flags_ )
17704 {
17705 }
17706
17707 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
17708 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017709 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017710 }
17711
17712 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
17713 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017714 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017715 return *this;
17716 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017717 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
17718 {
17719 subresource = subresource_;
17720 return *this;
17721 }
17722
17723 SparseImageMemoryBind& setOffset( Offset3D offset_ )
17724 {
17725 offset = offset_;
17726 return *this;
17727 }
17728
17729 SparseImageMemoryBind& setExtent( Extent3D extent_ )
17730 {
17731 extent = extent_;
17732 return *this;
17733 }
17734
17735 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
17736 {
17737 memory = memory_;
17738 return *this;
17739 }
17740
17741 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17742 {
17743 memoryOffset = memoryOffset_;
17744 return *this;
17745 }
17746
17747 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17748 {
17749 flags = flags_;
17750 return *this;
17751 }
17752
17753 operator const VkSparseImageMemoryBind&() const
17754 {
17755 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
17756 }
17757
17758 bool operator==( SparseImageMemoryBind const& rhs ) const
17759 {
17760 return ( subresource == rhs.subresource )
17761 && ( offset == rhs.offset )
17762 && ( extent == rhs.extent )
17763 && ( memory == rhs.memory )
17764 && ( memoryOffset == rhs.memoryOffset )
17765 && ( flags == rhs.flags );
17766 }
17767
17768 bool operator!=( SparseImageMemoryBind const& rhs ) const
17769 {
17770 return !operator==( rhs );
17771 }
17772
17773 ImageSubresource subresource;
17774 Offset3D offset;
17775 Extent3D extent;
17776 DeviceMemory memory;
17777 DeviceSize memoryOffset;
17778 SparseMemoryBindFlags flags;
17779 };
17780 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
17781
17782 struct SparseBufferMemoryBindInfo
17783 {
17784 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17785 : buffer( buffer_ )
17786 , bindCount( bindCount_ )
17787 , pBinds( pBinds_ )
17788 {
17789 }
17790
17791 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
17792 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017793 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017794 }
17795
17796 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
17797 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017798 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017799 return *this;
17800 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017801 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
17802 {
17803 buffer = buffer_;
17804 return *this;
17805 }
17806
17807 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17808 {
17809 bindCount = bindCount_;
17810 return *this;
17811 }
17812
17813 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17814 {
17815 pBinds = pBinds_;
17816 return *this;
17817 }
17818
17819 operator const VkSparseBufferMemoryBindInfo&() const
17820 {
17821 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
17822 }
17823
17824 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
17825 {
17826 return ( buffer == rhs.buffer )
17827 && ( bindCount == rhs.bindCount )
17828 && ( pBinds == rhs.pBinds );
17829 }
17830
17831 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
17832 {
17833 return !operator==( rhs );
17834 }
17835
17836 Buffer buffer;
17837 uint32_t bindCount;
17838 const SparseMemoryBind* pBinds;
17839 };
17840 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
17841
17842 struct SparseImageOpaqueMemoryBindInfo
17843 {
17844 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17845 : image( image_ )
17846 , bindCount( bindCount_ )
17847 , pBinds( pBinds_ )
17848 {
17849 }
17850
17851 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17852 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017853 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017854 }
17855
17856 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17857 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017858 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017859 return *this;
17860 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017861 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
17862 {
17863 image = image_;
17864 return *this;
17865 }
17866
17867 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17868 {
17869 bindCount = bindCount_;
17870 return *this;
17871 }
17872
17873 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17874 {
17875 pBinds = pBinds_;
17876 return *this;
17877 }
17878
17879 operator const VkSparseImageOpaqueMemoryBindInfo&() const
17880 {
17881 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
17882 }
17883
17884 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17885 {
17886 return ( image == rhs.image )
17887 && ( bindCount == rhs.bindCount )
17888 && ( pBinds == rhs.pBinds );
17889 }
17890
17891 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17892 {
17893 return !operator==( rhs );
17894 }
17895
17896 Image image;
17897 uint32_t bindCount;
17898 const SparseMemoryBind* pBinds;
17899 };
17900 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
17901
17902 struct SparseImageMemoryBindInfo
17903 {
17904 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
17905 : image( image_ )
17906 , bindCount( bindCount_ )
17907 , pBinds( pBinds_ )
17908 {
17909 }
17910
17911 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
17912 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017913 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017914 }
17915
17916 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
17917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017918 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017919 return *this;
17920 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017921 SparseImageMemoryBindInfo& setImage( Image image_ )
17922 {
17923 image = image_;
17924 return *this;
17925 }
17926
17927 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17928 {
17929 bindCount = bindCount_;
17930 return *this;
17931 }
17932
17933 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
17934 {
17935 pBinds = pBinds_;
17936 return *this;
17937 }
17938
17939 operator const VkSparseImageMemoryBindInfo&() const
17940 {
17941 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
17942 }
17943
17944 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
17945 {
17946 return ( image == rhs.image )
17947 && ( bindCount == rhs.bindCount )
17948 && ( pBinds == rhs.pBinds );
17949 }
17950
17951 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
17952 {
17953 return !operator==( rhs );
17954 }
17955
17956 Image image;
17957 uint32_t bindCount;
17958 const SparseImageMemoryBind* pBinds;
17959 };
17960 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
17961
17962 struct BindSparseInfo
17963 {
17964 BindSparseInfo( uint32_t waitSemaphoreCount_ = 0, const Semaphore* pWaitSemaphores_ = nullptr, uint32_t bufferBindCount_ = 0, const SparseBufferMemoryBindInfo* pBufferBinds_ = nullptr, uint32_t imageOpaqueBindCount_ = 0, const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = nullptr, uint32_t imageBindCount_ = 0, const SparseImageMemoryBindInfo* pImageBinds_ = nullptr, uint32_t signalSemaphoreCount_ = 0, const Semaphore* pSignalSemaphores_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070017965 : waitSemaphoreCount( waitSemaphoreCount_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017966 , pWaitSemaphores( pWaitSemaphores_ )
17967 , bufferBindCount( bufferBindCount_ )
17968 , pBufferBinds( pBufferBinds_ )
17969 , imageOpaqueBindCount( imageOpaqueBindCount_ )
17970 , pImageOpaqueBinds( pImageOpaqueBinds_ )
17971 , imageBindCount( imageBindCount_ )
17972 , pImageBinds( pImageBinds_ )
17973 , signalSemaphoreCount( signalSemaphoreCount_ )
17974 , pSignalSemaphores( pSignalSemaphores_ )
17975 {
17976 }
17977
17978 BindSparseInfo( VkBindSparseInfo const & rhs )
17979 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017980 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017981 }
17982
17983 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
17984 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017985 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017986 return *this;
17987 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017988 BindSparseInfo& setPNext( const void* pNext_ )
17989 {
17990 pNext = pNext_;
17991 return *this;
17992 }
17993
17994 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
17995 {
17996 waitSemaphoreCount = waitSemaphoreCount_;
17997 return *this;
17998 }
17999
18000 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
18001 {
18002 pWaitSemaphores = pWaitSemaphores_;
18003 return *this;
18004 }
18005
18006 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
18007 {
18008 bufferBindCount = bufferBindCount_;
18009 return *this;
18010 }
18011
18012 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
18013 {
18014 pBufferBinds = pBufferBinds_;
18015 return *this;
18016 }
18017
18018 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
18019 {
18020 imageOpaqueBindCount = imageOpaqueBindCount_;
18021 return *this;
18022 }
18023
18024 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
18025 {
18026 pImageOpaqueBinds = pImageOpaqueBinds_;
18027 return *this;
18028 }
18029
18030 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
18031 {
18032 imageBindCount = imageBindCount_;
18033 return *this;
18034 }
18035
18036 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
18037 {
18038 pImageBinds = pImageBinds_;
18039 return *this;
18040 }
18041
18042 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
18043 {
18044 signalSemaphoreCount = signalSemaphoreCount_;
18045 return *this;
18046 }
18047
18048 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
18049 {
18050 pSignalSemaphores = pSignalSemaphores_;
18051 return *this;
18052 }
18053
18054 operator const VkBindSparseInfo&() const
18055 {
18056 return *reinterpret_cast<const VkBindSparseInfo*>(this);
18057 }
18058
18059 bool operator==( BindSparseInfo const& rhs ) const
18060 {
18061 return ( sType == rhs.sType )
18062 && ( pNext == rhs.pNext )
18063 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
18064 && ( pWaitSemaphores == rhs.pWaitSemaphores )
18065 && ( bufferBindCount == rhs.bufferBindCount )
18066 && ( pBufferBinds == rhs.pBufferBinds )
18067 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
18068 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
18069 && ( imageBindCount == rhs.imageBindCount )
18070 && ( pImageBinds == rhs.pImageBinds )
18071 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
18072 && ( pSignalSemaphores == rhs.pSignalSemaphores );
18073 }
18074
18075 bool operator!=( BindSparseInfo const& rhs ) const
18076 {
18077 return !operator==( rhs );
18078 }
18079
18080 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018081 StructureType sType = StructureType::eBindSparseInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018082
18083 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018084 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018085 uint32_t waitSemaphoreCount;
18086 const Semaphore* pWaitSemaphores;
18087 uint32_t bufferBindCount;
18088 const SparseBufferMemoryBindInfo* pBufferBinds;
18089 uint32_t imageOpaqueBindCount;
18090 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
18091 uint32_t imageBindCount;
18092 const SparseImageMemoryBindInfo* pImageBinds;
18093 uint32_t signalSemaphoreCount;
18094 const Semaphore* pSignalSemaphores;
18095 };
18096 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
18097
18098 enum class PipelineStageFlagBits
18099 {
18100 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
18101 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
18102 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
18103 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
18104 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
18105 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
18106 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
18107 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
18108 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
18109 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
18110 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
18111 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
18112 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
18113 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
18114 eHost = VK_PIPELINE_STAGE_HOST_BIT,
18115 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018116 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
18117 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018118 };
18119
18120 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
18121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018122 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018123 {
18124 return PipelineStageFlags( bit0 ) | bit1;
18125 }
18126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018127 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
18128 {
18129 return ~( PipelineStageFlags( bits ) );
18130 }
18131
18132 template <> struct FlagTraits<PipelineStageFlagBits>
18133 {
18134 enum
18135 {
18136 allFlags = VkFlags(PipelineStageFlagBits::eTopOfPipe) | VkFlags(PipelineStageFlagBits::eDrawIndirect) | VkFlags(PipelineStageFlagBits::eVertexInput) | VkFlags(PipelineStageFlagBits::eVertexShader) | VkFlags(PipelineStageFlagBits::eTessellationControlShader) | VkFlags(PipelineStageFlagBits::eTessellationEvaluationShader) | VkFlags(PipelineStageFlagBits::eGeometryShader) | VkFlags(PipelineStageFlagBits::eFragmentShader) | VkFlags(PipelineStageFlagBits::eEarlyFragmentTests) | VkFlags(PipelineStageFlagBits::eLateFragmentTests) | VkFlags(PipelineStageFlagBits::eColorAttachmentOutput) | VkFlags(PipelineStageFlagBits::eComputeShader) | VkFlags(PipelineStageFlagBits::eTransfer) | VkFlags(PipelineStageFlagBits::eBottomOfPipe) | VkFlags(PipelineStageFlagBits::eHost) | VkFlags(PipelineStageFlagBits::eAllGraphics) | VkFlags(PipelineStageFlagBits::eAllCommands) | VkFlags(PipelineStageFlagBits::eCommandProcessNVX)
18137 };
18138 };
18139
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018140 enum class CommandPoolCreateFlagBits
18141 {
18142 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
18143 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
18144 };
18145
18146 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
18147
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018148 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018149 {
18150 return CommandPoolCreateFlags( bit0 ) | bit1;
18151 }
18152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018153 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
18154 {
18155 return ~( CommandPoolCreateFlags( bits ) );
18156 }
18157
18158 template <> struct FlagTraits<CommandPoolCreateFlagBits>
18159 {
18160 enum
18161 {
18162 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
18163 };
18164 };
18165
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018166 struct CommandPoolCreateInfo
18167 {
18168 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018169 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018170 , queueFamilyIndex( queueFamilyIndex_ )
18171 {
18172 }
18173
18174 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
18175 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018176 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018177 }
18178
18179 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
18180 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018181 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018182 return *this;
18183 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018184 CommandPoolCreateInfo& setPNext( const void* pNext_ )
18185 {
18186 pNext = pNext_;
18187 return *this;
18188 }
18189
18190 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
18191 {
18192 flags = flags_;
18193 return *this;
18194 }
18195
18196 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18197 {
18198 queueFamilyIndex = queueFamilyIndex_;
18199 return *this;
18200 }
18201
18202 operator const VkCommandPoolCreateInfo&() const
18203 {
18204 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
18205 }
18206
18207 bool operator==( CommandPoolCreateInfo const& rhs ) const
18208 {
18209 return ( sType == rhs.sType )
18210 && ( pNext == rhs.pNext )
18211 && ( flags == rhs.flags )
18212 && ( queueFamilyIndex == rhs.queueFamilyIndex );
18213 }
18214
18215 bool operator!=( CommandPoolCreateInfo const& rhs ) const
18216 {
18217 return !operator==( rhs );
18218 }
18219
18220 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018221 StructureType sType = StructureType::eCommandPoolCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018222
18223 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018224 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018225 CommandPoolCreateFlags flags;
18226 uint32_t queueFamilyIndex;
18227 };
18228 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
18229
18230 enum class CommandPoolResetFlagBits
18231 {
18232 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
18233 };
18234
18235 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
18236
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018237 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018238 {
18239 return CommandPoolResetFlags( bit0 ) | bit1;
18240 }
18241
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018242 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
18243 {
18244 return ~( CommandPoolResetFlags( bits ) );
18245 }
18246
18247 template <> struct FlagTraits<CommandPoolResetFlagBits>
18248 {
18249 enum
18250 {
18251 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
18252 };
18253 };
18254
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018255 enum class CommandBufferResetFlagBits
18256 {
18257 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
18258 };
18259
18260 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
18261
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018262 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018263 {
18264 return CommandBufferResetFlags( bit0 ) | bit1;
18265 }
18266
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018267 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
18268 {
18269 return ~( CommandBufferResetFlags( bits ) );
18270 }
18271
18272 template <> struct FlagTraits<CommandBufferResetFlagBits>
18273 {
18274 enum
18275 {
18276 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
18277 };
18278 };
18279
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018280 enum class SampleCountFlagBits
18281 {
18282 e1 = VK_SAMPLE_COUNT_1_BIT,
18283 e2 = VK_SAMPLE_COUNT_2_BIT,
18284 e4 = VK_SAMPLE_COUNT_4_BIT,
18285 e8 = VK_SAMPLE_COUNT_8_BIT,
18286 e16 = VK_SAMPLE_COUNT_16_BIT,
18287 e32 = VK_SAMPLE_COUNT_32_BIT,
18288 e64 = VK_SAMPLE_COUNT_64_BIT
18289 };
18290
18291 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
18292
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018293 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018294 {
18295 return SampleCountFlags( bit0 ) | bit1;
18296 }
18297
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018298 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
18299 {
18300 return ~( SampleCountFlags( bits ) );
18301 }
18302
18303 template <> struct FlagTraits<SampleCountFlagBits>
18304 {
18305 enum
18306 {
18307 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
18308 };
18309 };
18310
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018311 struct ImageFormatProperties
18312 {
18313 operator const VkImageFormatProperties&() const
18314 {
18315 return *reinterpret_cast<const VkImageFormatProperties*>(this);
18316 }
18317
18318 bool operator==( ImageFormatProperties const& rhs ) const
18319 {
18320 return ( maxExtent == rhs.maxExtent )
18321 && ( maxMipLevels == rhs.maxMipLevels )
18322 && ( maxArrayLayers == rhs.maxArrayLayers )
18323 && ( sampleCounts == rhs.sampleCounts )
18324 && ( maxResourceSize == rhs.maxResourceSize );
18325 }
18326
18327 bool operator!=( ImageFormatProperties const& rhs ) const
18328 {
18329 return !operator==( rhs );
18330 }
18331
18332 Extent3D maxExtent;
18333 uint32_t maxMipLevels;
18334 uint32_t maxArrayLayers;
18335 SampleCountFlags sampleCounts;
18336 DeviceSize maxResourceSize;
18337 };
18338 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
18339
18340 struct ImageCreateInfo
18341 {
18342 ImageCreateInfo( ImageCreateFlags flags_ = ImageCreateFlags(), ImageType imageType_ = ImageType::e1D, Format format_ = Format::eUndefined, Extent3D extent_ = Extent3D(), uint32_t mipLevels_ = 0, uint32_t arrayLayers_ = 0, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr, ImageLayout initialLayout_ = ImageLayout::eUndefined )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018343 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018344 , imageType( imageType_ )
18345 , format( format_ )
18346 , extent( extent_ )
18347 , mipLevels( mipLevels_ )
18348 , arrayLayers( arrayLayers_ )
18349 , samples( samples_ )
18350 , tiling( tiling_ )
18351 , usage( usage_ )
18352 , sharingMode( sharingMode_ )
18353 , queueFamilyIndexCount( queueFamilyIndexCount_ )
18354 , pQueueFamilyIndices( pQueueFamilyIndices_ )
18355 , initialLayout( initialLayout_ )
18356 {
18357 }
18358
18359 ImageCreateInfo( VkImageCreateInfo const & rhs )
18360 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018361 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018362 }
18363
18364 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
18365 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018366 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018367 return *this;
18368 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018369 ImageCreateInfo& setPNext( const void* pNext_ )
18370 {
18371 pNext = pNext_;
18372 return *this;
18373 }
18374
18375 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
18376 {
18377 flags = flags_;
18378 return *this;
18379 }
18380
18381 ImageCreateInfo& setImageType( ImageType imageType_ )
18382 {
18383 imageType = imageType_;
18384 return *this;
18385 }
18386
18387 ImageCreateInfo& setFormat( Format format_ )
18388 {
18389 format = format_;
18390 return *this;
18391 }
18392
18393 ImageCreateInfo& setExtent( Extent3D extent_ )
18394 {
18395 extent = extent_;
18396 return *this;
18397 }
18398
18399 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
18400 {
18401 mipLevels = mipLevels_;
18402 return *this;
18403 }
18404
18405 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
18406 {
18407 arrayLayers = arrayLayers_;
18408 return *this;
18409 }
18410
18411 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
18412 {
18413 samples = samples_;
18414 return *this;
18415 }
18416
18417 ImageCreateInfo& setTiling( ImageTiling tiling_ )
18418 {
18419 tiling = tiling_;
18420 return *this;
18421 }
18422
18423 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
18424 {
18425 usage = usage_;
18426 return *this;
18427 }
18428
18429 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
18430 {
18431 sharingMode = sharingMode_;
18432 return *this;
18433 }
18434
18435 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
18436 {
18437 queueFamilyIndexCount = queueFamilyIndexCount_;
18438 return *this;
18439 }
18440
18441 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
18442 {
18443 pQueueFamilyIndices = pQueueFamilyIndices_;
18444 return *this;
18445 }
18446
18447 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
18448 {
18449 initialLayout = initialLayout_;
18450 return *this;
18451 }
18452
18453 operator const VkImageCreateInfo&() const
18454 {
18455 return *reinterpret_cast<const VkImageCreateInfo*>(this);
18456 }
18457
18458 bool operator==( ImageCreateInfo const& rhs ) const
18459 {
18460 return ( sType == rhs.sType )
18461 && ( pNext == rhs.pNext )
18462 && ( flags == rhs.flags )
18463 && ( imageType == rhs.imageType )
18464 && ( format == rhs.format )
18465 && ( extent == rhs.extent )
18466 && ( mipLevels == rhs.mipLevels )
18467 && ( arrayLayers == rhs.arrayLayers )
18468 && ( samples == rhs.samples )
18469 && ( tiling == rhs.tiling )
18470 && ( usage == rhs.usage )
18471 && ( sharingMode == rhs.sharingMode )
18472 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
18473 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
18474 && ( initialLayout == rhs.initialLayout );
18475 }
18476
18477 bool operator!=( ImageCreateInfo const& rhs ) const
18478 {
18479 return !operator==( rhs );
18480 }
18481
18482 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018483 StructureType sType = StructureType::eImageCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018484
18485 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018486 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018487 ImageCreateFlags flags;
18488 ImageType imageType;
18489 Format format;
18490 Extent3D extent;
18491 uint32_t mipLevels;
18492 uint32_t arrayLayers;
18493 SampleCountFlagBits samples;
18494 ImageTiling tiling;
18495 ImageUsageFlags usage;
18496 SharingMode sharingMode;
18497 uint32_t queueFamilyIndexCount;
18498 const uint32_t* pQueueFamilyIndices;
18499 ImageLayout initialLayout;
18500 };
18501 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
18502
18503 struct PipelineMultisampleStateCreateInfo
18504 {
18505 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018506 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018507 , rasterizationSamples( rasterizationSamples_ )
18508 , sampleShadingEnable( sampleShadingEnable_ )
18509 , minSampleShading( minSampleShading_ )
18510 , pSampleMask( pSampleMask_ )
18511 , alphaToCoverageEnable( alphaToCoverageEnable_ )
18512 , alphaToOneEnable( alphaToOneEnable_ )
18513 {
18514 }
18515
18516 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
18517 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018518 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018519 }
18520
18521 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
18522 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018523 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018524 return *this;
18525 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018526 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
18527 {
18528 pNext = pNext_;
18529 return *this;
18530 }
18531
18532 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
18533 {
18534 flags = flags_;
18535 return *this;
18536 }
18537
18538 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
18539 {
18540 rasterizationSamples = rasterizationSamples_;
18541 return *this;
18542 }
18543
18544 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
18545 {
18546 sampleShadingEnable = sampleShadingEnable_;
18547 return *this;
18548 }
18549
18550 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
18551 {
18552 minSampleShading = minSampleShading_;
18553 return *this;
18554 }
18555
18556 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
18557 {
18558 pSampleMask = pSampleMask_;
18559 return *this;
18560 }
18561
18562 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
18563 {
18564 alphaToCoverageEnable = alphaToCoverageEnable_;
18565 return *this;
18566 }
18567
18568 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
18569 {
18570 alphaToOneEnable = alphaToOneEnable_;
18571 return *this;
18572 }
18573
18574 operator const VkPipelineMultisampleStateCreateInfo&() const
18575 {
18576 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
18577 }
18578
18579 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
18580 {
18581 return ( sType == rhs.sType )
18582 && ( pNext == rhs.pNext )
18583 && ( flags == rhs.flags )
18584 && ( rasterizationSamples == rhs.rasterizationSamples )
18585 && ( sampleShadingEnable == rhs.sampleShadingEnable )
18586 && ( minSampleShading == rhs.minSampleShading )
18587 && ( pSampleMask == rhs.pSampleMask )
18588 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
18589 && ( alphaToOneEnable == rhs.alphaToOneEnable );
18590 }
18591
18592 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
18593 {
18594 return !operator==( rhs );
18595 }
18596
18597 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018598 StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018599
18600 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018601 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018602 PipelineMultisampleStateCreateFlags flags;
18603 SampleCountFlagBits rasterizationSamples;
18604 Bool32 sampleShadingEnable;
18605 float minSampleShading;
18606 const SampleMask* pSampleMask;
18607 Bool32 alphaToCoverageEnable;
18608 Bool32 alphaToOneEnable;
18609 };
18610 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
18611
18612 struct GraphicsPipelineCreateInfo
18613 {
18614 GraphicsPipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), uint32_t stageCount_ = 0, const PipelineShaderStageCreateInfo* pStages_ = nullptr, const PipelineVertexInputStateCreateInfo* pVertexInputState_ = nullptr, const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = nullptr, const PipelineTessellationStateCreateInfo* pTessellationState_ = nullptr, const PipelineViewportStateCreateInfo* pViewportState_ = nullptr, const PipelineRasterizationStateCreateInfo* pRasterizationState_ = nullptr, const PipelineMultisampleStateCreateInfo* pMultisampleState_ = nullptr, const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = nullptr, const PipelineColorBlendStateCreateInfo* pColorBlendState_ = nullptr, const PipelineDynamicStateCreateInfo* pDynamicState_ = nullptr, PipelineLayout layout_ = PipelineLayout(), RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018615 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018616 , stageCount( stageCount_ )
18617 , pStages( pStages_ )
18618 , pVertexInputState( pVertexInputState_ )
18619 , pInputAssemblyState( pInputAssemblyState_ )
18620 , pTessellationState( pTessellationState_ )
18621 , pViewportState( pViewportState_ )
18622 , pRasterizationState( pRasterizationState_ )
18623 , pMultisampleState( pMultisampleState_ )
18624 , pDepthStencilState( pDepthStencilState_ )
18625 , pColorBlendState( pColorBlendState_ )
18626 , pDynamicState( pDynamicState_ )
18627 , layout( layout_ )
18628 , renderPass( renderPass_ )
18629 , subpass( subpass_ )
18630 , basePipelineHandle( basePipelineHandle_ )
18631 , basePipelineIndex( basePipelineIndex_ )
18632 {
18633 }
18634
18635 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
18636 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018637 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018638 }
18639
18640 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
18641 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018642 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018643 return *this;
18644 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018645 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
18646 {
18647 pNext = pNext_;
18648 return *this;
18649 }
18650
18651 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
18652 {
18653 flags = flags_;
18654 return *this;
18655 }
18656
18657 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
18658 {
18659 stageCount = stageCount_;
18660 return *this;
18661 }
18662
18663 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
18664 {
18665 pStages = pStages_;
18666 return *this;
18667 }
18668
18669 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
18670 {
18671 pVertexInputState = pVertexInputState_;
18672 return *this;
18673 }
18674
18675 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
18676 {
18677 pInputAssemblyState = pInputAssemblyState_;
18678 return *this;
18679 }
18680
18681 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
18682 {
18683 pTessellationState = pTessellationState_;
18684 return *this;
18685 }
18686
18687 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
18688 {
18689 pViewportState = pViewportState_;
18690 return *this;
18691 }
18692
18693 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
18694 {
18695 pRasterizationState = pRasterizationState_;
18696 return *this;
18697 }
18698
18699 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
18700 {
18701 pMultisampleState = pMultisampleState_;
18702 return *this;
18703 }
18704
18705 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
18706 {
18707 pDepthStencilState = pDepthStencilState_;
18708 return *this;
18709 }
18710
18711 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
18712 {
18713 pColorBlendState = pColorBlendState_;
18714 return *this;
18715 }
18716
18717 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
18718 {
18719 pDynamicState = pDynamicState_;
18720 return *this;
18721 }
18722
18723 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
18724 {
18725 layout = layout_;
18726 return *this;
18727 }
18728
18729 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
18730 {
18731 renderPass = renderPass_;
18732 return *this;
18733 }
18734
18735 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
18736 {
18737 subpass = subpass_;
18738 return *this;
18739 }
18740
18741 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
18742 {
18743 basePipelineHandle = basePipelineHandle_;
18744 return *this;
18745 }
18746
18747 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
18748 {
18749 basePipelineIndex = basePipelineIndex_;
18750 return *this;
18751 }
18752
18753 operator const VkGraphicsPipelineCreateInfo&() const
18754 {
18755 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
18756 }
18757
18758 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
18759 {
18760 return ( sType == rhs.sType )
18761 && ( pNext == rhs.pNext )
18762 && ( flags == rhs.flags )
18763 && ( stageCount == rhs.stageCount )
18764 && ( pStages == rhs.pStages )
18765 && ( pVertexInputState == rhs.pVertexInputState )
18766 && ( pInputAssemblyState == rhs.pInputAssemblyState )
18767 && ( pTessellationState == rhs.pTessellationState )
18768 && ( pViewportState == rhs.pViewportState )
18769 && ( pRasterizationState == rhs.pRasterizationState )
18770 && ( pMultisampleState == rhs.pMultisampleState )
18771 && ( pDepthStencilState == rhs.pDepthStencilState )
18772 && ( pColorBlendState == rhs.pColorBlendState )
18773 && ( pDynamicState == rhs.pDynamicState )
18774 && ( layout == rhs.layout )
18775 && ( renderPass == rhs.renderPass )
18776 && ( subpass == rhs.subpass )
18777 && ( basePipelineHandle == rhs.basePipelineHandle )
18778 && ( basePipelineIndex == rhs.basePipelineIndex );
18779 }
18780
18781 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
18782 {
18783 return !operator==( rhs );
18784 }
18785
18786 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018787 StructureType sType = StructureType::eGraphicsPipelineCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018788
18789 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070018790 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018791 PipelineCreateFlags flags;
18792 uint32_t stageCount;
18793 const PipelineShaderStageCreateInfo* pStages;
18794 const PipelineVertexInputStateCreateInfo* pVertexInputState;
18795 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
18796 const PipelineTessellationStateCreateInfo* pTessellationState;
18797 const PipelineViewportStateCreateInfo* pViewportState;
18798 const PipelineRasterizationStateCreateInfo* pRasterizationState;
18799 const PipelineMultisampleStateCreateInfo* pMultisampleState;
18800 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
18801 const PipelineColorBlendStateCreateInfo* pColorBlendState;
18802 const PipelineDynamicStateCreateInfo* pDynamicState;
18803 PipelineLayout layout;
18804 RenderPass renderPass;
18805 uint32_t subpass;
18806 Pipeline basePipelineHandle;
18807 int32_t basePipelineIndex;
18808 };
18809 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
18810
18811 struct PhysicalDeviceLimits
18812 {
18813 operator const VkPhysicalDeviceLimits&() const
18814 {
18815 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
18816 }
18817
18818 bool operator==( PhysicalDeviceLimits const& rhs ) const
18819 {
18820 return ( maxImageDimension1D == rhs.maxImageDimension1D )
18821 && ( maxImageDimension2D == rhs.maxImageDimension2D )
18822 && ( maxImageDimension3D == rhs.maxImageDimension3D )
18823 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
18824 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18825 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
18826 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
18827 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
18828 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
18829 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
18830 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
18831 && ( bufferImageGranularity == rhs.bufferImageGranularity )
18832 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
18833 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
18834 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
18835 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
18836 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
18837 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
18838 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
18839 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
18840 && ( maxPerStageResources == rhs.maxPerStageResources )
18841 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
18842 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
18843 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
18844 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
18845 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
18846 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
18847 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
18848 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
18849 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
18850 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
18851 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
18852 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
18853 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
18854 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
18855 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
18856 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
18857 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
18858 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
18859 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
18860 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
18861 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
18862 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
18863 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
18864 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
18865 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
18866 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
18867 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
18868 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
18869 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
18870 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
18871 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
18872 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
18873 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
18874 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
18875 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
18876 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
18877 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
18878 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
18879 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
18880 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
18881 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
18882 && ( maxViewports == rhs.maxViewports )
18883 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
18884 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
18885 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
18886 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
18887 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
18888 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
18889 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
18890 && ( minTexelOffset == rhs.minTexelOffset )
18891 && ( maxTexelOffset == rhs.maxTexelOffset )
18892 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
18893 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
18894 && ( minInterpolationOffset == rhs.minInterpolationOffset )
18895 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
18896 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
18897 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
18898 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
18899 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
18900 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
18901 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
18902 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
18903 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
18904 && ( maxColorAttachments == rhs.maxColorAttachments )
18905 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
18906 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
18907 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
18908 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
18909 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
18910 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
18911 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
18912 && ( timestampPeriod == rhs.timestampPeriod )
18913 && ( maxClipDistances == rhs.maxClipDistances )
18914 && ( maxCullDistances == rhs.maxCullDistances )
18915 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
18916 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
18917 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
18918 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
18919 && ( pointSizeGranularity == rhs.pointSizeGranularity )
18920 && ( lineWidthGranularity == rhs.lineWidthGranularity )
18921 && ( strictLines == rhs.strictLines )
18922 && ( standardSampleLocations == rhs.standardSampleLocations )
18923 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
18924 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
18925 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
18926 }
18927
18928 bool operator!=( PhysicalDeviceLimits const& rhs ) const
18929 {
18930 return !operator==( rhs );
18931 }
18932
18933 uint32_t maxImageDimension1D;
18934 uint32_t maxImageDimension2D;
18935 uint32_t maxImageDimension3D;
18936 uint32_t maxImageDimensionCube;
18937 uint32_t maxImageArrayLayers;
18938 uint32_t maxTexelBufferElements;
18939 uint32_t maxUniformBufferRange;
18940 uint32_t maxStorageBufferRange;
18941 uint32_t maxPushConstantsSize;
18942 uint32_t maxMemoryAllocationCount;
18943 uint32_t maxSamplerAllocationCount;
18944 DeviceSize bufferImageGranularity;
18945 DeviceSize sparseAddressSpaceSize;
18946 uint32_t maxBoundDescriptorSets;
18947 uint32_t maxPerStageDescriptorSamplers;
18948 uint32_t maxPerStageDescriptorUniformBuffers;
18949 uint32_t maxPerStageDescriptorStorageBuffers;
18950 uint32_t maxPerStageDescriptorSampledImages;
18951 uint32_t maxPerStageDescriptorStorageImages;
18952 uint32_t maxPerStageDescriptorInputAttachments;
18953 uint32_t maxPerStageResources;
18954 uint32_t maxDescriptorSetSamplers;
18955 uint32_t maxDescriptorSetUniformBuffers;
18956 uint32_t maxDescriptorSetUniformBuffersDynamic;
18957 uint32_t maxDescriptorSetStorageBuffers;
18958 uint32_t maxDescriptorSetStorageBuffersDynamic;
18959 uint32_t maxDescriptorSetSampledImages;
18960 uint32_t maxDescriptorSetStorageImages;
18961 uint32_t maxDescriptorSetInputAttachments;
18962 uint32_t maxVertexInputAttributes;
18963 uint32_t maxVertexInputBindings;
18964 uint32_t maxVertexInputAttributeOffset;
18965 uint32_t maxVertexInputBindingStride;
18966 uint32_t maxVertexOutputComponents;
18967 uint32_t maxTessellationGenerationLevel;
18968 uint32_t maxTessellationPatchSize;
18969 uint32_t maxTessellationControlPerVertexInputComponents;
18970 uint32_t maxTessellationControlPerVertexOutputComponents;
18971 uint32_t maxTessellationControlPerPatchOutputComponents;
18972 uint32_t maxTessellationControlTotalOutputComponents;
18973 uint32_t maxTessellationEvaluationInputComponents;
18974 uint32_t maxTessellationEvaluationOutputComponents;
18975 uint32_t maxGeometryShaderInvocations;
18976 uint32_t maxGeometryInputComponents;
18977 uint32_t maxGeometryOutputComponents;
18978 uint32_t maxGeometryOutputVertices;
18979 uint32_t maxGeometryTotalOutputComponents;
18980 uint32_t maxFragmentInputComponents;
18981 uint32_t maxFragmentOutputAttachments;
18982 uint32_t maxFragmentDualSrcAttachments;
18983 uint32_t maxFragmentCombinedOutputResources;
18984 uint32_t maxComputeSharedMemorySize;
18985 uint32_t maxComputeWorkGroupCount[3];
18986 uint32_t maxComputeWorkGroupInvocations;
18987 uint32_t maxComputeWorkGroupSize[3];
18988 uint32_t subPixelPrecisionBits;
18989 uint32_t subTexelPrecisionBits;
18990 uint32_t mipmapPrecisionBits;
18991 uint32_t maxDrawIndexedIndexValue;
18992 uint32_t maxDrawIndirectCount;
18993 float maxSamplerLodBias;
18994 float maxSamplerAnisotropy;
18995 uint32_t maxViewports;
18996 uint32_t maxViewportDimensions[2];
18997 float viewportBoundsRange[2];
18998 uint32_t viewportSubPixelBits;
18999 size_t minMemoryMapAlignment;
19000 DeviceSize minTexelBufferOffsetAlignment;
19001 DeviceSize minUniformBufferOffsetAlignment;
19002 DeviceSize minStorageBufferOffsetAlignment;
19003 int32_t minTexelOffset;
19004 uint32_t maxTexelOffset;
19005 int32_t minTexelGatherOffset;
19006 uint32_t maxTexelGatherOffset;
19007 float minInterpolationOffset;
19008 float maxInterpolationOffset;
19009 uint32_t subPixelInterpolationOffsetBits;
19010 uint32_t maxFramebufferWidth;
19011 uint32_t maxFramebufferHeight;
19012 uint32_t maxFramebufferLayers;
19013 SampleCountFlags framebufferColorSampleCounts;
19014 SampleCountFlags framebufferDepthSampleCounts;
19015 SampleCountFlags framebufferStencilSampleCounts;
19016 SampleCountFlags framebufferNoAttachmentsSampleCounts;
19017 uint32_t maxColorAttachments;
19018 SampleCountFlags sampledImageColorSampleCounts;
19019 SampleCountFlags sampledImageIntegerSampleCounts;
19020 SampleCountFlags sampledImageDepthSampleCounts;
19021 SampleCountFlags sampledImageStencilSampleCounts;
19022 SampleCountFlags storageImageSampleCounts;
19023 uint32_t maxSampleMaskWords;
19024 Bool32 timestampComputeAndGraphics;
19025 float timestampPeriod;
19026 uint32_t maxClipDistances;
19027 uint32_t maxCullDistances;
19028 uint32_t maxCombinedClipAndCullDistances;
19029 uint32_t discreteQueuePriorities;
19030 float pointSizeRange[2];
19031 float lineWidthRange[2];
19032 float pointSizeGranularity;
19033 float lineWidthGranularity;
19034 Bool32 strictLines;
19035 Bool32 standardSampleLocations;
19036 DeviceSize optimalBufferCopyOffsetAlignment;
19037 DeviceSize optimalBufferCopyRowPitchAlignment;
19038 DeviceSize nonCoherentAtomSize;
19039 };
19040 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
19041
19042 struct PhysicalDeviceProperties
19043 {
19044 operator const VkPhysicalDeviceProperties&() const
19045 {
19046 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
19047 }
19048
19049 bool operator==( PhysicalDeviceProperties const& rhs ) const
19050 {
19051 return ( apiVersion == rhs.apiVersion )
19052 && ( driverVersion == rhs.driverVersion )
19053 && ( vendorID == rhs.vendorID )
19054 && ( deviceID == rhs.deviceID )
19055 && ( deviceType == rhs.deviceType )
19056 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
19057 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
19058 && ( limits == rhs.limits )
19059 && ( sparseProperties == rhs.sparseProperties );
19060 }
19061
19062 bool operator!=( PhysicalDeviceProperties const& rhs ) const
19063 {
19064 return !operator==( rhs );
19065 }
19066
19067 uint32_t apiVersion;
19068 uint32_t driverVersion;
19069 uint32_t vendorID;
19070 uint32_t deviceID;
19071 PhysicalDeviceType deviceType;
19072 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
19073 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
19074 PhysicalDeviceLimits limits;
19075 PhysicalDeviceSparseProperties sparseProperties;
19076 };
19077 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
19078
Mark Young39389872017-01-19 21:10:49 -070019079 struct PhysicalDeviceProperties2KHR
19080 {
19081 operator const VkPhysicalDeviceProperties2KHR&() const
19082 {
19083 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
19084 }
19085
19086 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
19087 {
19088 return ( sType == rhs.sType )
19089 && ( pNext == rhs.pNext )
19090 && ( properties == rhs.properties );
19091 }
19092
19093 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
19094 {
19095 return !operator==( rhs );
19096 }
19097
19098 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019099 StructureType sType = StructureType::ePhysicalDeviceProperties2KHR;
Mark Young39389872017-01-19 21:10:49 -070019100
19101 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019102 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070019103 PhysicalDeviceProperties properties;
19104 };
19105 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
19106
19107 struct ImageFormatProperties2KHR
19108 {
19109 operator const VkImageFormatProperties2KHR&() const
19110 {
19111 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
19112 }
19113
19114 bool operator==( ImageFormatProperties2KHR const& rhs ) const
19115 {
19116 return ( sType == rhs.sType )
19117 && ( pNext == rhs.pNext )
19118 && ( imageFormatProperties == rhs.imageFormatProperties );
19119 }
19120
19121 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
19122 {
19123 return !operator==( rhs );
19124 }
19125
19126 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019127 StructureType sType = StructureType::eImageFormatProperties2KHR;
Mark Young39389872017-01-19 21:10:49 -070019128
19129 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019130 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070019131 ImageFormatProperties imageFormatProperties;
19132 };
19133 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
19134
19135 struct PhysicalDeviceSparseImageFormatInfo2KHR
19136 {
19137 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019138 : format( format_ )
Mark Young39389872017-01-19 21:10:49 -070019139 , type( type_ )
19140 , samples( samples_ )
19141 , usage( usage_ )
19142 , tiling( tiling_ )
19143 {
19144 }
19145
19146 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19147 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019148 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019149 }
19150
19151 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19152 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019153 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019154 return *this;
19155 }
Mark Young39389872017-01-19 21:10:49 -070019156 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
19157 {
19158 pNext = pNext_;
19159 return *this;
19160 }
19161
19162 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
19163 {
19164 format = format_;
19165 return *this;
19166 }
19167
19168 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
19169 {
19170 type = type_;
19171 return *this;
19172 }
19173
19174 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
19175 {
19176 samples = samples_;
19177 return *this;
19178 }
19179
19180 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
19181 {
19182 usage = usage_;
19183 return *this;
19184 }
19185
19186 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
19187 {
19188 tiling = tiling_;
19189 return *this;
19190 }
19191
19192 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
19193 {
19194 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
19195 }
19196
19197 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19198 {
19199 return ( sType == rhs.sType )
19200 && ( pNext == rhs.pNext )
19201 && ( format == rhs.format )
19202 && ( type == rhs.type )
19203 && ( samples == rhs.samples )
19204 && ( usage == rhs.usage )
19205 && ( tiling == rhs.tiling );
19206 }
19207
19208 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19209 {
19210 return !operator==( rhs );
19211 }
19212
19213 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019214 StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR;
Mark Young39389872017-01-19 21:10:49 -070019215
19216 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019217 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070019218 Format format;
19219 ImageType type;
19220 SampleCountFlagBits samples;
19221 ImageUsageFlags usage;
19222 ImageTiling tiling;
19223 };
19224 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
19225
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019226 struct SampleLocationsInfoEXT
19227 {
19228 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, Extent2D sampleLocationGridSize_ = Extent2D(), uint32_t sampleLocationsCount_ = 0, const SampleLocationEXT* pSampleLocations_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019229 : sampleLocationsPerPixel( sampleLocationsPerPixel_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019230 , sampleLocationGridSize( sampleLocationGridSize_ )
19231 , sampleLocationsCount( sampleLocationsCount_ )
19232 , pSampleLocations( pSampleLocations_ )
19233 {
19234 }
19235
19236 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
19237 {
19238 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19239 }
19240
19241 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
19242 {
19243 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19244 return *this;
19245 }
19246 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
19247 {
19248 pNext = pNext_;
19249 return *this;
19250 }
19251
19252 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
19253 {
19254 sampleLocationsPerPixel = sampleLocationsPerPixel_;
19255 return *this;
19256 }
19257
19258 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
19259 {
19260 sampleLocationGridSize = sampleLocationGridSize_;
19261 return *this;
19262 }
19263
19264 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
19265 {
19266 sampleLocationsCount = sampleLocationsCount_;
19267 return *this;
19268 }
19269
19270 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
19271 {
19272 pSampleLocations = pSampleLocations_;
19273 return *this;
19274 }
19275
19276 operator const VkSampleLocationsInfoEXT&() const
19277 {
19278 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
19279 }
19280
19281 bool operator==( SampleLocationsInfoEXT const& rhs ) const
19282 {
19283 return ( sType == rhs.sType )
19284 && ( pNext == rhs.pNext )
19285 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
19286 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
19287 && ( sampleLocationsCount == rhs.sampleLocationsCount )
19288 && ( pSampleLocations == rhs.pSampleLocations );
19289 }
19290
19291 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
19292 {
19293 return !operator==( rhs );
19294 }
19295
19296 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019297 StructureType sType = StructureType::eSampleLocationsInfoEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019298
19299 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019300 const void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019301 SampleCountFlagBits sampleLocationsPerPixel;
19302 Extent2D sampleLocationGridSize;
19303 uint32_t sampleLocationsCount;
19304 const SampleLocationEXT* pSampleLocations;
19305 };
19306 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
19307
19308 struct AttachmentSampleLocationsEXT
19309 {
19310 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19311 : attachmentIndex( attachmentIndex_ )
19312 , sampleLocationsInfo( sampleLocationsInfo_ )
19313 {
19314 }
19315
19316 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
19317 {
19318 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19319 }
19320
19321 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
19322 {
19323 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19324 return *this;
19325 }
19326 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
19327 {
19328 attachmentIndex = attachmentIndex_;
19329 return *this;
19330 }
19331
19332 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19333 {
19334 sampleLocationsInfo = sampleLocationsInfo_;
19335 return *this;
19336 }
19337
19338 operator const VkAttachmentSampleLocationsEXT&() const
19339 {
19340 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
19341 }
19342
19343 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
19344 {
19345 return ( attachmentIndex == rhs.attachmentIndex )
19346 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19347 }
19348
19349 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
19350 {
19351 return !operator==( rhs );
19352 }
19353
19354 uint32_t attachmentIndex;
19355 SampleLocationsInfoEXT sampleLocationsInfo;
19356 };
19357 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
19358
19359 struct SubpassSampleLocationsEXT
19360 {
19361 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19362 : subpassIndex( subpassIndex_ )
19363 , sampleLocationsInfo( sampleLocationsInfo_ )
19364 {
19365 }
19366
19367 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
19368 {
19369 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19370 }
19371
19372 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
19373 {
19374 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19375 return *this;
19376 }
19377 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
19378 {
19379 subpassIndex = subpassIndex_;
19380 return *this;
19381 }
19382
19383 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19384 {
19385 sampleLocationsInfo = sampleLocationsInfo_;
19386 return *this;
19387 }
19388
19389 operator const VkSubpassSampleLocationsEXT&() const
19390 {
19391 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
19392 }
19393
19394 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
19395 {
19396 return ( subpassIndex == rhs.subpassIndex )
19397 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19398 }
19399
19400 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
19401 {
19402 return !operator==( rhs );
19403 }
19404
19405 uint32_t subpassIndex;
19406 SampleLocationsInfoEXT sampleLocationsInfo;
19407 };
19408 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
19409
19410 struct RenderPassSampleLocationsBeginInfoEXT
19411 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019412 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, uint32_t postSubpassSampleLocationsCount_ = 0, const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019413 : attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019414 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
19415 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019416 , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019417 {
19418 }
19419
19420 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19421 {
19422 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19423 }
19424
19425 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19426 {
19427 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19428 return *this;
19429 }
19430 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
19431 {
19432 pNext = pNext_;
19433 return *this;
19434 }
19435
19436 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
19437 {
19438 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
19439 return *this;
19440 }
19441
19442 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
19443 {
19444 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
19445 return *this;
19446 }
19447
19448 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
19449 {
19450 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
19451 return *this;
19452 }
19453
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019454 RenderPassSampleLocationsBeginInfoEXT& setPPostSubpassSampleLocations( const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019455 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019456 pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019457 return *this;
19458 }
19459
19460 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
19461 {
19462 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
19463 }
19464
19465 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19466 {
19467 return ( sType == rhs.sType )
19468 && ( pNext == rhs.pNext )
19469 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
19470 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
19471 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019472 && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019473 }
19474
19475 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19476 {
19477 return !operator==( rhs );
19478 }
19479
19480 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019481 StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019482
19483 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019484 const void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019485 uint32_t attachmentInitialSampleLocationsCount;
19486 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
19487 uint32_t postSubpassSampleLocationsCount;
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019488 const SubpassSampleLocationsEXT* pPostSubpassSampleLocations;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019489 };
19490 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
19491
19492 struct PipelineSampleLocationsStateCreateInfoEXT
19493 {
19494 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019495 : sampleLocationsEnable( sampleLocationsEnable_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019496 , sampleLocationsInfo( sampleLocationsInfo_ )
19497 {
19498 }
19499
19500 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19501 {
19502 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19503 }
19504
19505 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19506 {
19507 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19508 return *this;
19509 }
19510 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
19511 {
19512 pNext = pNext_;
19513 return *this;
19514 }
19515
19516 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
19517 {
19518 sampleLocationsEnable = sampleLocationsEnable_;
19519 return *this;
19520 }
19521
19522 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19523 {
19524 sampleLocationsInfo = sampleLocationsInfo_;
19525 return *this;
19526 }
19527
19528 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
19529 {
19530 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
19531 }
19532
19533 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19534 {
19535 return ( sType == rhs.sType )
19536 && ( pNext == rhs.pNext )
19537 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
19538 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19539 }
19540
19541 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19542 {
19543 return !operator==( rhs );
19544 }
19545
19546 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019547 StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019548
19549 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019550 const void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019551 Bool32 sampleLocationsEnable;
19552 SampleLocationsInfoEXT sampleLocationsInfo;
19553 };
19554 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
19555
19556 struct PhysicalDeviceSampleLocationsPropertiesEXT
19557 {
19558 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
19559 {
19560 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
19561 }
19562
19563 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19564 {
19565 return ( sType == rhs.sType )
19566 && ( pNext == rhs.pNext )
19567 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
19568 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
19569 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
19570 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
19571 && ( variableSampleLocations == rhs.variableSampleLocations );
19572 }
19573
19574 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19575 {
19576 return !operator==( rhs );
19577 }
19578
19579 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019580 StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019581
19582 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019583 void* pNext = nullptr;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019584 SampleCountFlags sampleLocationSampleCounts;
19585 Extent2D maxSampleLocationGridSize;
19586 float sampleLocationCoordinateRange[2];
19587 uint32_t sampleLocationSubPixelBits;
19588 Bool32 variableSampleLocations;
19589 };
19590 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
19591
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019592 enum class AttachmentDescriptionFlagBits
19593 {
19594 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
19595 };
19596
19597 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
19598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019599 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019600 {
19601 return AttachmentDescriptionFlags( bit0 ) | bit1;
19602 }
19603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019604 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
19605 {
19606 return ~( AttachmentDescriptionFlags( bits ) );
19607 }
19608
19609 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
19610 {
19611 enum
19612 {
19613 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
19614 };
19615 };
19616
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019617 struct AttachmentDescription
19618 {
19619 AttachmentDescription( AttachmentDescriptionFlags flags_ = AttachmentDescriptionFlags(), Format format_ = Format::eUndefined, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, AttachmentLoadOp loadOp_ = AttachmentLoadOp::eLoad, AttachmentStoreOp storeOp_ = AttachmentStoreOp::eStore, AttachmentLoadOp stencilLoadOp_ = AttachmentLoadOp::eLoad, AttachmentStoreOp stencilStoreOp_ = AttachmentStoreOp::eStore, ImageLayout initialLayout_ = ImageLayout::eUndefined, ImageLayout finalLayout_ = ImageLayout::eUndefined )
19620 : flags( flags_ )
19621 , format( format_ )
19622 , samples( samples_ )
19623 , loadOp( loadOp_ )
19624 , storeOp( storeOp_ )
19625 , stencilLoadOp( stencilLoadOp_ )
19626 , stencilStoreOp( stencilStoreOp_ )
19627 , initialLayout( initialLayout_ )
19628 , finalLayout( finalLayout_ )
19629 {
19630 }
19631
19632 AttachmentDescription( VkAttachmentDescription const & rhs )
19633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019634 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019635 }
19636
19637 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
19638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019639 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019640 return *this;
19641 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019642 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
19643 {
19644 flags = flags_;
19645 return *this;
19646 }
19647
19648 AttachmentDescription& setFormat( Format format_ )
19649 {
19650 format = format_;
19651 return *this;
19652 }
19653
19654 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
19655 {
19656 samples = samples_;
19657 return *this;
19658 }
19659
19660 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
19661 {
19662 loadOp = loadOp_;
19663 return *this;
19664 }
19665
19666 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
19667 {
19668 storeOp = storeOp_;
19669 return *this;
19670 }
19671
19672 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
19673 {
19674 stencilLoadOp = stencilLoadOp_;
19675 return *this;
19676 }
19677
19678 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
19679 {
19680 stencilStoreOp = stencilStoreOp_;
19681 return *this;
19682 }
19683
19684 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
19685 {
19686 initialLayout = initialLayout_;
19687 return *this;
19688 }
19689
19690 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
19691 {
19692 finalLayout = finalLayout_;
19693 return *this;
19694 }
19695
19696 operator const VkAttachmentDescription&() const
19697 {
19698 return *reinterpret_cast<const VkAttachmentDescription*>(this);
19699 }
19700
19701 bool operator==( AttachmentDescription const& rhs ) const
19702 {
19703 return ( flags == rhs.flags )
19704 && ( format == rhs.format )
19705 && ( samples == rhs.samples )
19706 && ( loadOp == rhs.loadOp )
19707 && ( storeOp == rhs.storeOp )
19708 && ( stencilLoadOp == rhs.stencilLoadOp )
19709 && ( stencilStoreOp == rhs.stencilStoreOp )
19710 && ( initialLayout == rhs.initialLayout )
19711 && ( finalLayout == rhs.finalLayout );
19712 }
19713
19714 bool operator!=( AttachmentDescription const& rhs ) const
19715 {
19716 return !operator==( rhs );
19717 }
19718
19719 AttachmentDescriptionFlags flags;
19720 Format format;
19721 SampleCountFlagBits samples;
19722 AttachmentLoadOp loadOp;
19723 AttachmentStoreOp storeOp;
19724 AttachmentLoadOp stencilLoadOp;
19725 AttachmentStoreOp stencilStoreOp;
19726 ImageLayout initialLayout;
19727 ImageLayout finalLayout;
19728 };
19729 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
19730
19731 enum class StencilFaceFlagBits
19732 {
19733 eFront = VK_STENCIL_FACE_FRONT_BIT,
19734 eBack = VK_STENCIL_FACE_BACK_BIT,
19735 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
19736 };
19737
19738 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
19739
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019740 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019741 {
19742 return StencilFaceFlags( bit0 ) | bit1;
19743 }
19744
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019745 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
19746 {
19747 return ~( StencilFaceFlags( bits ) );
19748 }
19749
19750 template <> struct FlagTraits<StencilFaceFlagBits>
19751 {
19752 enum
19753 {
19754 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
19755 };
19756 };
19757
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019758 enum class DescriptorPoolCreateFlagBits
19759 {
19760 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
19761 };
19762
19763 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
19764
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019765 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019766 {
19767 return DescriptorPoolCreateFlags( bit0 ) | bit1;
19768 }
19769
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019770 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
19771 {
19772 return ~( DescriptorPoolCreateFlags( bits ) );
19773 }
19774
19775 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
19776 {
19777 enum
19778 {
19779 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
19780 };
19781 };
19782
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019783 struct DescriptorPoolCreateInfo
19784 {
19785 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019786 : flags( flags_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019787 , maxSets( maxSets_ )
19788 , poolSizeCount( poolSizeCount_ )
19789 , pPoolSizes( pPoolSizes_ )
19790 {
19791 }
19792
19793 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
19794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019795 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019796 }
19797
19798 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
19799 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019800 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019801 return *this;
19802 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019803 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
19804 {
19805 pNext = pNext_;
19806 return *this;
19807 }
19808
19809 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
19810 {
19811 flags = flags_;
19812 return *this;
19813 }
19814
19815 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
19816 {
19817 maxSets = maxSets_;
19818 return *this;
19819 }
19820
19821 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
19822 {
19823 poolSizeCount = poolSizeCount_;
19824 return *this;
19825 }
19826
19827 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
19828 {
19829 pPoolSizes = pPoolSizes_;
19830 return *this;
19831 }
19832
19833 operator const VkDescriptorPoolCreateInfo&() const
19834 {
19835 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
19836 }
19837
19838 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
19839 {
19840 return ( sType == rhs.sType )
19841 && ( pNext == rhs.pNext )
19842 && ( flags == rhs.flags )
19843 && ( maxSets == rhs.maxSets )
19844 && ( poolSizeCount == rhs.poolSizeCount )
19845 && ( pPoolSizes == rhs.pPoolSizes );
19846 }
19847
19848 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
19849 {
19850 return !operator==( rhs );
19851 }
19852
19853 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019854 StructureType sType = StructureType::eDescriptorPoolCreateInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019855
19856 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070019857 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019858 DescriptorPoolCreateFlags flags;
19859 uint32_t maxSets;
19860 uint32_t poolSizeCount;
19861 const DescriptorPoolSize* pPoolSizes;
19862 };
19863 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
19864
19865 enum class DependencyFlagBits
19866 {
Mark Young0f183a82017-02-28 09:58:04 -070019867 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
19868 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
19869 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019870 };
19871
19872 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
19873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019874 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019875 {
19876 return DependencyFlags( bit0 ) | bit1;
19877 }
19878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019879 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
19880 {
19881 return ~( DependencyFlags( bits ) );
19882 }
19883
19884 template <> struct FlagTraits<DependencyFlagBits>
19885 {
19886 enum
19887 {
Mark Young0f183a82017-02-28 09:58:04 -070019888 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019889 };
19890 };
19891
19892 struct SubpassDependency
19893 {
19894 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
19895 : srcSubpass( srcSubpass_ )
19896 , dstSubpass( dstSubpass_ )
19897 , srcStageMask( srcStageMask_ )
19898 , dstStageMask( dstStageMask_ )
19899 , srcAccessMask( srcAccessMask_ )
19900 , dstAccessMask( dstAccessMask_ )
19901 , dependencyFlags( dependencyFlags_ )
19902 {
19903 }
19904
19905 SubpassDependency( VkSubpassDependency const & rhs )
19906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019907 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019908 }
19909
19910 SubpassDependency& operator=( VkSubpassDependency const & rhs )
19911 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019912 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019913 return *this;
19914 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019915 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
19916 {
19917 srcSubpass = srcSubpass_;
19918 return *this;
19919 }
19920
19921 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
19922 {
19923 dstSubpass = dstSubpass_;
19924 return *this;
19925 }
19926
19927 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
19928 {
19929 srcStageMask = srcStageMask_;
19930 return *this;
19931 }
19932
19933 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
19934 {
19935 dstStageMask = dstStageMask_;
19936 return *this;
19937 }
19938
19939 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
19940 {
19941 srcAccessMask = srcAccessMask_;
19942 return *this;
19943 }
19944
19945 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
19946 {
19947 dstAccessMask = dstAccessMask_;
19948 return *this;
19949 }
19950
19951 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
19952 {
19953 dependencyFlags = dependencyFlags_;
19954 return *this;
19955 }
19956
19957 operator const VkSubpassDependency&() const
19958 {
19959 return *reinterpret_cast<const VkSubpassDependency*>(this);
19960 }
19961
19962 bool operator==( SubpassDependency const& rhs ) const
19963 {
19964 return ( srcSubpass == rhs.srcSubpass )
19965 && ( dstSubpass == rhs.dstSubpass )
19966 && ( srcStageMask == rhs.srcStageMask )
19967 && ( dstStageMask == rhs.dstStageMask )
19968 && ( srcAccessMask == rhs.srcAccessMask )
19969 && ( dstAccessMask == rhs.dstAccessMask )
19970 && ( dependencyFlags == rhs.dependencyFlags );
19971 }
19972
19973 bool operator!=( SubpassDependency const& rhs ) const
19974 {
19975 return !operator==( rhs );
19976 }
19977
19978 uint32_t srcSubpass;
19979 uint32_t dstSubpass;
19980 PipelineStageFlags srcStageMask;
19981 PipelineStageFlags dstStageMask;
19982 AccessFlags srcAccessMask;
19983 AccessFlags dstAccessMask;
19984 DependencyFlags dependencyFlags;
19985 };
19986 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
19987
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019988 enum class PresentModeKHR
19989 {
19990 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
19991 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
19992 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060019993 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
19994 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
19995 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019996 };
19997
19998 enum class ColorSpaceKHR
19999 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060020000 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
20001 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
20002 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
20003 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
20004 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
20005 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
20006 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
20007 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
20008 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
20009 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
20010 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
20011 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
20012 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060020013 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
20014 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020015 };
20016
20017 struct SurfaceFormatKHR
20018 {
20019 operator const VkSurfaceFormatKHR&() const
20020 {
20021 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
20022 }
20023
20024 bool operator==( SurfaceFormatKHR const& rhs ) const
20025 {
20026 return ( format == rhs.format )
20027 && ( colorSpace == rhs.colorSpace );
20028 }
20029
20030 bool operator!=( SurfaceFormatKHR const& rhs ) const
20031 {
20032 return !operator==( rhs );
20033 }
20034
20035 Format format;
20036 ColorSpaceKHR colorSpace;
20037 };
20038 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
20039
Mark Lobodzinski54385432017-05-15 10:27:52 -060020040 struct SurfaceFormat2KHR
20041 {
20042 operator const VkSurfaceFormat2KHR&() const
20043 {
20044 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
20045 }
20046
20047 bool operator==( SurfaceFormat2KHR const& rhs ) const
20048 {
20049 return ( sType == rhs.sType )
20050 && ( pNext == rhs.pNext )
20051 && ( surfaceFormat == rhs.surfaceFormat );
20052 }
20053
20054 bool operator!=( SurfaceFormat2KHR const& rhs ) const
20055 {
20056 return !operator==( rhs );
20057 }
20058
20059 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020060 StructureType sType = StructureType::eSurfaceFormat2KHR;
Mark Lobodzinski54385432017-05-15 10:27:52 -060020061
20062 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020063 void* pNext = nullptr;
Mark Lobodzinski54385432017-05-15 10:27:52 -060020064 SurfaceFormatKHR surfaceFormat;
20065 };
20066 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
20067
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020068 enum class DisplayPlaneAlphaFlagBitsKHR
20069 {
20070 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
20071 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
20072 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
20073 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
20074 };
20075
20076 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
20077
20078 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
20079 {
20080 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
20081 }
20082
20083 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
20084 {
20085 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
20086 }
20087
20088 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
20089 {
20090 enum
20091 {
20092 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
20093 };
20094 };
20095
20096 struct DisplayPlaneCapabilitiesKHR
20097 {
20098 operator const VkDisplayPlaneCapabilitiesKHR&() const
20099 {
20100 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
20101 }
20102
20103 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
20104 {
20105 return ( supportedAlpha == rhs.supportedAlpha )
20106 && ( minSrcPosition == rhs.minSrcPosition )
20107 && ( maxSrcPosition == rhs.maxSrcPosition )
20108 && ( minSrcExtent == rhs.minSrcExtent )
20109 && ( maxSrcExtent == rhs.maxSrcExtent )
20110 && ( minDstPosition == rhs.minDstPosition )
20111 && ( maxDstPosition == rhs.maxDstPosition )
20112 && ( minDstExtent == rhs.minDstExtent )
20113 && ( maxDstExtent == rhs.maxDstExtent );
20114 }
20115
20116 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
20117 {
20118 return !operator==( rhs );
20119 }
20120
20121 DisplayPlaneAlphaFlagsKHR supportedAlpha;
20122 Offset2D minSrcPosition;
20123 Offset2D maxSrcPosition;
20124 Extent2D minSrcExtent;
20125 Extent2D maxSrcExtent;
20126 Offset2D minDstPosition;
20127 Offset2D maxDstPosition;
20128 Extent2D minDstExtent;
20129 Extent2D maxDstExtent;
20130 };
20131 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
20132
20133 enum class CompositeAlphaFlagBitsKHR
20134 {
20135 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
20136 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
20137 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
20138 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
20139 };
20140
20141 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
20142
20143 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
20144 {
20145 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
20146 }
20147
20148 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
20149 {
20150 return ~( CompositeAlphaFlagsKHR( bits ) );
20151 }
20152
20153 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
20154 {
20155 enum
20156 {
20157 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
20158 };
20159 };
20160
20161 enum class SurfaceTransformFlagBitsKHR
20162 {
20163 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
20164 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
20165 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
20166 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
20167 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
20168 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
20169 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
20170 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
20171 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
20172 };
20173
20174 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
20175
20176 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
20177 {
20178 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
20179 }
20180
20181 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
20182 {
20183 return ~( SurfaceTransformFlagsKHR( bits ) );
20184 }
20185
20186 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
20187 {
20188 enum
20189 {
20190 allFlags = VkFlags(SurfaceTransformFlagBitsKHR::eIdentity) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate90) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate180) | VkFlags(SurfaceTransformFlagBitsKHR::eRotate270) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirror) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) | VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) | VkFlags(SurfaceTransformFlagBitsKHR::eInherit)
20191 };
20192 };
20193
20194 struct DisplayPropertiesKHR
20195 {
20196 operator const VkDisplayPropertiesKHR&() const
20197 {
20198 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
20199 }
20200
20201 bool operator==( DisplayPropertiesKHR const& rhs ) const
20202 {
20203 return ( display == rhs.display )
20204 && ( displayName == rhs.displayName )
20205 && ( physicalDimensions == rhs.physicalDimensions )
20206 && ( physicalResolution == rhs.physicalResolution )
20207 && ( supportedTransforms == rhs.supportedTransforms )
20208 && ( planeReorderPossible == rhs.planeReorderPossible )
20209 && ( persistentContent == rhs.persistentContent );
20210 }
20211
20212 bool operator!=( DisplayPropertiesKHR const& rhs ) const
20213 {
20214 return !operator==( rhs );
20215 }
20216
20217 DisplayKHR display;
20218 const char* displayName;
20219 Extent2D physicalDimensions;
20220 Extent2D physicalResolution;
20221 SurfaceTransformFlagsKHR supportedTransforms;
20222 Bool32 planeReorderPossible;
20223 Bool32 persistentContent;
20224 };
20225 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
20226
20227 struct DisplaySurfaceCreateInfoKHR
20228 {
20229 DisplaySurfaceCreateInfoKHR( DisplaySurfaceCreateFlagsKHR flags_ = DisplaySurfaceCreateFlagsKHR(), DisplayModeKHR displayMode_ = DisplayModeKHR(), uint32_t planeIndex_ = 0, uint32_t planeStackIndex_ = 0, SurfaceTransformFlagBitsKHR transform_ = SurfaceTransformFlagBitsKHR::eIdentity, float globalAlpha_ = 0, DisplayPlaneAlphaFlagBitsKHR alphaMode_ = DisplayPlaneAlphaFlagBitsKHR::eOpaque, Extent2D imageExtent_ = Extent2D() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020230 : flags( flags_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020231 , displayMode( displayMode_ )
20232 , planeIndex( planeIndex_ )
20233 , planeStackIndex( planeStackIndex_ )
20234 , transform( transform_ )
20235 , globalAlpha( globalAlpha_ )
20236 , alphaMode( alphaMode_ )
20237 , imageExtent( imageExtent_ )
20238 {
20239 }
20240
20241 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
20242 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020243 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020244 }
20245
20246 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
20247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020248 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020249 return *this;
20250 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020251 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
20252 {
20253 pNext = pNext_;
20254 return *this;
20255 }
20256
20257 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
20258 {
20259 flags = flags_;
20260 return *this;
20261 }
20262
20263 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
20264 {
20265 displayMode = displayMode_;
20266 return *this;
20267 }
20268
20269 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
20270 {
20271 planeIndex = planeIndex_;
20272 return *this;
20273 }
20274
20275 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
20276 {
20277 planeStackIndex = planeStackIndex_;
20278 return *this;
20279 }
20280
20281 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
20282 {
20283 transform = transform_;
20284 return *this;
20285 }
20286
20287 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
20288 {
20289 globalAlpha = globalAlpha_;
20290 return *this;
20291 }
20292
20293 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
20294 {
20295 alphaMode = alphaMode_;
20296 return *this;
20297 }
20298
20299 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20300 {
20301 imageExtent = imageExtent_;
20302 return *this;
20303 }
20304
20305 operator const VkDisplaySurfaceCreateInfoKHR&() const
20306 {
20307 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
20308 }
20309
20310 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
20311 {
20312 return ( sType == rhs.sType )
20313 && ( pNext == rhs.pNext )
20314 && ( flags == rhs.flags )
20315 && ( displayMode == rhs.displayMode )
20316 && ( planeIndex == rhs.planeIndex )
20317 && ( planeStackIndex == rhs.planeStackIndex )
20318 && ( transform == rhs.transform )
20319 && ( globalAlpha == rhs.globalAlpha )
20320 && ( alphaMode == rhs.alphaMode )
20321 && ( imageExtent == rhs.imageExtent );
20322 }
20323
20324 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
20325 {
20326 return !operator==( rhs );
20327 }
20328
20329 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020330 StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020331
20332 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020333 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020334 DisplaySurfaceCreateFlagsKHR flags;
20335 DisplayModeKHR displayMode;
20336 uint32_t planeIndex;
20337 uint32_t planeStackIndex;
20338 SurfaceTransformFlagBitsKHR transform;
20339 float globalAlpha;
20340 DisplayPlaneAlphaFlagBitsKHR alphaMode;
20341 Extent2D imageExtent;
20342 };
20343 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
20344
20345 struct SurfaceCapabilitiesKHR
20346 {
20347 operator const VkSurfaceCapabilitiesKHR&() const
20348 {
20349 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
20350 }
20351
20352 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
20353 {
20354 return ( minImageCount == rhs.minImageCount )
20355 && ( maxImageCount == rhs.maxImageCount )
20356 && ( currentExtent == rhs.currentExtent )
20357 && ( minImageExtent == rhs.minImageExtent )
20358 && ( maxImageExtent == rhs.maxImageExtent )
20359 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20360 && ( supportedTransforms == rhs.supportedTransforms )
20361 && ( currentTransform == rhs.currentTransform )
20362 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20363 && ( supportedUsageFlags == rhs.supportedUsageFlags );
20364 }
20365
20366 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
20367 {
20368 return !operator==( rhs );
20369 }
20370
20371 uint32_t minImageCount;
20372 uint32_t maxImageCount;
20373 Extent2D currentExtent;
20374 Extent2D minImageExtent;
20375 Extent2D maxImageExtent;
20376 uint32_t maxImageArrayLayers;
20377 SurfaceTransformFlagsKHR supportedTransforms;
20378 SurfaceTransformFlagBitsKHR currentTransform;
20379 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20380 ImageUsageFlags supportedUsageFlags;
20381 };
20382 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
20383
Mark Lobodzinski54385432017-05-15 10:27:52 -060020384 struct SurfaceCapabilities2KHR
20385 {
20386 operator const VkSurfaceCapabilities2KHR&() const
20387 {
20388 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
20389 }
20390
20391 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
20392 {
20393 return ( sType == rhs.sType )
20394 && ( pNext == rhs.pNext )
20395 && ( surfaceCapabilities == rhs.surfaceCapabilities );
20396 }
20397
20398 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
20399 {
20400 return !operator==( rhs );
20401 }
20402
20403 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020404 StructureType sType = StructureType::eSurfaceCapabilities2KHR;
Mark Lobodzinski54385432017-05-15 10:27:52 -060020405
20406 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020407 void* pNext = nullptr;
Mark Lobodzinski54385432017-05-15 10:27:52 -060020408 SurfaceCapabilitiesKHR surfaceCapabilities;
20409 };
20410 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
20411
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020412 enum class DebugReportFlagBitsEXT
20413 {
20414 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
20415 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
20416 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
20417 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
20418 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
20419 };
20420
20421 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
20422
20423 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
20424 {
20425 return DebugReportFlagsEXT( bit0 ) | bit1;
20426 }
20427
20428 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
20429 {
20430 return ~( DebugReportFlagsEXT( bits ) );
20431 }
20432
20433 template <> struct FlagTraits<DebugReportFlagBitsEXT>
20434 {
20435 enum
20436 {
20437 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
20438 };
20439 };
20440
20441 struct DebugReportCallbackCreateInfoEXT
20442 {
20443 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020444 : flags( flags_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020445 , pfnCallback( pfnCallback_ )
20446 , pUserData( pUserData_ )
20447 {
20448 }
20449
20450 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
20451 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020452 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020453 }
20454
20455 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
20456 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020457 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020458 return *this;
20459 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020460 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
20461 {
20462 pNext = pNext_;
20463 return *this;
20464 }
20465
20466 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
20467 {
20468 flags = flags_;
20469 return *this;
20470 }
20471
20472 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
20473 {
20474 pfnCallback = pfnCallback_;
20475 return *this;
20476 }
20477
20478 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
20479 {
20480 pUserData = pUserData_;
20481 return *this;
20482 }
20483
20484 operator const VkDebugReportCallbackCreateInfoEXT&() const
20485 {
20486 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
20487 }
20488
20489 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
20490 {
20491 return ( sType == rhs.sType )
20492 && ( pNext == rhs.pNext )
20493 && ( flags == rhs.flags )
20494 && ( pfnCallback == rhs.pfnCallback )
20495 && ( pUserData == rhs.pUserData );
20496 }
20497
20498 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
20499 {
20500 return !operator==( rhs );
20501 }
20502
20503 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020504 StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020505
20506 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020507 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020508 DebugReportFlagsEXT flags;
20509 PFN_vkDebugReportCallbackEXT pfnCallback;
20510 void* pUserData;
20511 };
20512 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
20513
20514 enum class DebugReportObjectTypeEXT
20515 {
20516 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
20517 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
20518 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
20519 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
20520 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
20521 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
20522 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
20523 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
20524 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
20525 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
20526 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
20527 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
20528 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
20529 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
20530 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
20531 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
20532 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
20533 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
20534 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
20535 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
20536 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
20537 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
20538 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
20539 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
20540 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
20541 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
20542 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
20543 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020544 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020545 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
20546 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
20547 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020548 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060020549 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060020550 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT,
20551 eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020552 };
20553
20554 struct DebugMarkerObjectNameInfoEXT
20555 {
20556 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020557 : objectType( objectType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020558 , object( object_ )
20559 , pObjectName( pObjectName_ )
20560 {
20561 }
20562
20563 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
20564 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020565 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020566 }
20567
20568 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
20569 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020570 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020571 return *this;
20572 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020573 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
20574 {
20575 pNext = pNext_;
20576 return *this;
20577 }
20578
20579 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20580 {
20581 objectType = objectType_;
20582 return *this;
20583 }
20584
20585 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
20586 {
20587 object = object_;
20588 return *this;
20589 }
20590
20591 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
20592 {
20593 pObjectName = pObjectName_;
20594 return *this;
20595 }
20596
20597 operator const VkDebugMarkerObjectNameInfoEXT&() const
20598 {
20599 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
20600 }
20601
20602 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
20603 {
20604 return ( sType == rhs.sType )
20605 && ( pNext == rhs.pNext )
20606 && ( objectType == rhs.objectType )
20607 && ( object == rhs.object )
20608 && ( pObjectName == rhs.pObjectName );
20609 }
20610
20611 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
20612 {
20613 return !operator==( rhs );
20614 }
20615
20616 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020617 StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020618
20619 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020620 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020621 DebugReportObjectTypeEXT objectType;
20622 uint64_t object;
20623 const char* pObjectName;
20624 };
20625 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
20626
20627 struct DebugMarkerObjectTagInfoEXT
20628 {
20629 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020630 : objectType( objectType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020631 , object( object_ )
20632 , tagName( tagName_ )
20633 , tagSize( tagSize_ )
20634 , pTag( pTag_ )
20635 {
20636 }
20637
20638 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
20639 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020640 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020641 }
20642
20643 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
20644 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020645 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020646 return *this;
20647 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020648 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
20649 {
20650 pNext = pNext_;
20651 return *this;
20652 }
20653
20654 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20655 {
20656 objectType = objectType_;
20657 return *this;
20658 }
20659
20660 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
20661 {
20662 object = object_;
20663 return *this;
20664 }
20665
20666 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
20667 {
20668 tagName = tagName_;
20669 return *this;
20670 }
20671
20672 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
20673 {
20674 tagSize = tagSize_;
20675 return *this;
20676 }
20677
20678 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
20679 {
20680 pTag = pTag_;
20681 return *this;
20682 }
20683
20684 operator const VkDebugMarkerObjectTagInfoEXT&() const
20685 {
20686 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
20687 }
20688
20689 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
20690 {
20691 return ( sType == rhs.sType )
20692 && ( pNext == rhs.pNext )
20693 && ( objectType == rhs.objectType )
20694 && ( object == rhs.object )
20695 && ( tagName == rhs.tagName )
20696 && ( tagSize == rhs.tagSize )
20697 && ( pTag == rhs.pTag );
20698 }
20699
20700 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
20701 {
20702 return !operator==( rhs );
20703 }
20704
20705 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020706 StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020707
20708 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020709 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020710 DebugReportObjectTypeEXT objectType;
20711 uint64_t object;
20712 uint64_t tagName;
20713 size_t tagSize;
20714 const void* pTag;
20715 };
20716 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
20717
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020718 enum class RasterizationOrderAMD
20719 {
20720 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
20721 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
20722 };
20723
20724 struct PipelineRasterizationStateRasterizationOrderAMD
20725 {
20726 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020727 : rasterizationOrder( rasterizationOrder_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020728 {
20729 }
20730
20731 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20732 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020733 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020734 }
20735
20736 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20737 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020738 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020739 return *this;
20740 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020741 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
20742 {
20743 pNext = pNext_;
20744 return *this;
20745 }
20746
20747 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
20748 {
20749 rasterizationOrder = rasterizationOrder_;
20750 return *this;
20751 }
20752
20753 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
20754 {
20755 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
20756 }
20757
20758 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20759 {
20760 return ( sType == rhs.sType )
20761 && ( pNext == rhs.pNext )
20762 && ( rasterizationOrder == rhs.rasterizationOrder );
20763 }
20764
20765 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20766 {
20767 return !operator==( rhs );
20768 }
20769
20770 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020771 StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020772
20773 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020774 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020775 RasterizationOrderAMD rasterizationOrder;
20776 };
20777 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
20778
20779 enum class ExternalMemoryHandleTypeFlagBitsNV
20780 {
20781 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
20782 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
20783 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
20784 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
20785 };
20786
20787 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
20788
20789 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
20790 {
20791 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
20792 }
20793
20794 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
20795 {
20796 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
20797 }
20798
20799 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
20800 {
20801 enum
20802 {
20803 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
20804 };
20805 };
20806
20807 struct ExternalMemoryImageCreateInfoNV
20808 {
20809 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020810 : handleTypes( handleTypes_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020811 {
20812 }
20813
20814 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
20815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020816 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020817 }
20818
20819 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
20820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020821 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020822 return *this;
20823 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020824 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
20825 {
20826 pNext = pNext_;
20827 return *this;
20828 }
20829
20830 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20831 {
20832 handleTypes = handleTypes_;
20833 return *this;
20834 }
20835
20836 operator const VkExternalMemoryImageCreateInfoNV&() const
20837 {
20838 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
20839 }
20840
20841 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
20842 {
20843 return ( sType == rhs.sType )
20844 && ( pNext == rhs.pNext )
20845 && ( handleTypes == rhs.handleTypes );
20846 }
20847
20848 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
20849 {
20850 return !operator==( rhs );
20851 }
20852
20853 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020854 StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020855
20856 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020857 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020858 ExternalMemoryHandleTypeFlagsNV handleTypes;
20859 };
20860 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
20861
20862 struct ExportMemoryAllocateInfoNV
20863 {
20864 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020865 : handleTypes( handleTypes_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020866 {
20867 }
20868
20869 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
20870 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020871 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020872 }
20873
20874 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
20875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020876 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020877 return *this;
20878 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020879 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
20880 {
20881 pNext = pNext_;
20882 return *this;
20883 }
20884
20885 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20886 {
20887 handleTypes = handleTypes_;
20888 return *this;
20889 }
20890
20891 operator const VkExportMemoryAllocateInfoNV&() const
20892 {
20893 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
20894 }
20895
20896 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
20897 {
20898 return ( sType == rhs.sType )
20899 && ( pNext == rhs.pNext )
20900 && ( handleTypes == rhs.handleTypes );
20901 }
20902
20903 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
20904 {
20905 return !operator==( rhs );
20906 }
20907
20908 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020909 StructureType sType = StructureType::eExportMemoryAllocateInfoNV;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020910
20911 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020912 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020913 ExternalMemoryHandleTypeFlagsNV handleTypes;
20914 };
20915 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
20916
20917#ifdef VK_USE_PLATFORM_WIN32_KHR
20918 struct ImportMemoryWin32HandleInfoNV
20919 {
20920 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020921 : handleType( handleType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020922 , handle( handle_ )
20923 {
20924 }
20925
20926 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
20927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020928 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020929 }
20930
20931 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
20932 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020933 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020934 return *this;
20935 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020936 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
20937 {
20938 pNext = pNext_;
20939 return *this;
20940 }
20941
20942 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
20943 {
20944 handleType = handleType_;
20945 return *this;
20946 }
20947
20948 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
20949 {
20950 handle = handle_;
20951 return *this;
20952 }
20953
20954 operator const VkImportMemoryWin32HandleInfoNV&() const
20955 {
20956 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
20957 }
20958
20959 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
20960 {
20961 return ( sType == rhs.sType )
20962 && ( pNext == rhs.pNext )
20963 && ( handleType == rhs.handleType )
20964 && ( handle == rhs.handle );
20965 }
20966
20967 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
20968 {
20969 return !operator==( rhs );
20970 }
20971
20972 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020973 StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020974
20975 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070020976 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020977 ExternalMemoryHandleTypeFlagsNV handleType;
20978 HANDLE handle;
20979 };
20980 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
20981#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20982
20983 enum class ExternalMemoryFeatureFlagBitsNV
20984 {
20985 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
20986 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
20987 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
20988 };
20989
20990 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
20991
20992 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
20993 {
20994 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
20995 }
20996
20997 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
20998 {
20999 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
21000 }
21001
21002 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
21003 {
21004 enum
21005 {
21006 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
21007 };
21008 };
21009
21010 struct ExternalImageFormatPropertiesNV
21011 {
21012 operator const VkExternalImageFormatPropertiesNV&() const
21013 {
21014 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
21015 }
21016
21017 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
21018 {
21019 return ( imageFormatProperties == rhs.imageFormatProperties )
21020 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
21021 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21022 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
21023 }
21024
21025 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
21026 {
21027 return !operator==( rhs );
21028 }
21029
21030 ImageFormatProperties imageFormatProperties;
21031 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
21032 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
21033 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
21034 };
21035 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
21036
21037 enum class ValidationCheckEXT
21038 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021039 eAll = VK_VALIDATION_CHECK_ALL_EXT,
21040 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021041 };
21042
21043 struct ValidationFlagsEXT
21044 {
21045 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021046 : disabledValidationCheckCount( disabledValidationCheckCount_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021047 , pDisabledValidationChecks( pDisabledValidationChecks_ )
21048 {
21049 }
21050
21051 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
21052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021053 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021054 }
21055
21056 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
21057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021058 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021059 return *this;
21060 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021061 ValidationFlagsEXT& setPNext( const void* pNext_ )
21062 {
21063 pNext = pNext_;
21064 return *this;
21065 }
21066
21067 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
21068 {
21069 disabledValidationCheckCount = disabledValidationCheckCount_;
21070 return *this;
21071 }
21072
21073 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
21074 {
21075 pDisabledValidationChecks = pDisabledValidationChecks_;
21076 return *this;
21077 }
21078
21079 operator const VkValidationFlagsEXT&() const
21080 {
21081 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
21082 }
21083
21084 bool operator==( ValidationFlagsEXT const& rhs ) const
21085 {
21086 return ( sType == rhs.sType )
21087 && ( pNext == rhs.pNext )
21088 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
21089 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
21090 }
21091
21092 bool operator!=( ValidationFlagsEXT const& rhs ) const
21093 {
21094 return !operator==( rhs );
21095 }
21096
21097 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021098 StructureType sType = StructureType::eValidationFlagsEXT;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021099
21100 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021101 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021102 uint32_t disabledValidationCheckCount;
21103 ValidationCheckEXT* pDisabledValidationChecks;
21104 };
21105 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
21106
21107 enum class IndirectCommandsLayoutUsageFlagBitsNVX
21108 {
21109 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
21110 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
21111 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
21112 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
21113 };
21114
21115 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
21116
21117 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
21118 {
21119 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
21120 }
21121
21122 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
21123 {
21124 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
21125 }
21126
21127 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
21128 {
21129 enum
21130 {
21131 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
21132 };
21133 };
21134
21135 enum class ObjectEntryUsageFlagBitsNVX
21136 {
21137 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
21138 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
21139 };
21140
21141 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
21142
21143 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
21144 {
21145 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
21146 }
21147
21148 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
21149 {
21150 return ~( ObjectEntryUsageFlagsNVX( bits ) );
21151 }
21152
21153 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
21154 {
21155 enum
21156 {
21157 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
21158 };
21159 };
21160
21161 enum class IndirectCommandsTokenTypeNVX
21162 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021163 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
21164 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
21165 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
21166 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
21167 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
21168 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
21169 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
21170 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021171 };
21172
21173 struct IndirectCommandsTokenNVX
21174 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021175 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021176 : tokenType( tokenType_ )
21177 , buffer( buffer_ )
21178 , offset( offset_ )
21179 {
21180 }
21181
21182 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
21183 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021184 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021185 }
21186
21187 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
21188 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021189 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021190 return *this;
21191 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021192 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21193 {
21194 tokenType = tokenType_;
21195 return *this;
21196 }
21197
21198 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
21199 {
21200 buffer = buffer_;
21201 return *this;
21202 }
21203
21204 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
21205 {
21206 offset = offset_;
21207 return *this;
21208 }
21209
21210 operator const VkIndirectCommandsTokenNVX&() const
21211 {
21212 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
21213 }
21214
21215 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
21216 {
21217 return ( tokenType == rhs.tokenType )
21218 && ( buffer == rhs.buffer )
21219 && ( offset == rhs.offset );
21220 }
21221
21222 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
21223 {
21224 return !operator==( rhs );
21225 }
21226
21227 IndirectCommandsTokenTypeNVX tokenType;
21228 Buffer buffer;
21229 DeviceSize offset;
21230 };
21231 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
21232
21233 struct IndirectCommandsLayoutTokenNVX
21234 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021235 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021236 : tokenType( tokenType_ )
21237 , bindingUnit( bindingUnit_ )
21238 , dynamicCount( dynamicCount_ )
21239 , divisor( divisor_ )
21240 {
21241 }
21242
21243 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
21244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021245 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021246 }
21247
21248 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
21249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021250 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021251 return *this;
21252 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021253 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21254 {
21255 tokenType = tokenType_;
21256 return *this;
21257 }
21258
21259 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
21260 {
21261 bindingUnit = bindingUnit_;
21262 return *this;
21263 }
21264
21265 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
21266 {
21267 dynamicCount = dynamicCount_;
21268 return *this;
21269 }
21270
21271 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
21272 {
21273 divisor = divisor_;
21274 return *this;
21275 }
21276
21277 operator const VkIndirectCommandsLayoutTokenNVX&() const
21278 {
21279 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
21280 }
21281
21282 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
21283 {
21284 return ( tokenType == rhs.tokenType )
21285 && ( bindingUnit == rhs.bindingUnit )
21286 && ( dynamicCount == rhs.dynamicCount )
21287 && ( divisor == rhs.divisor );
21288 }
21289
21290 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
21291 {
21292 return !operator==( rhs );
21293 }
21294
21295 IndirectCommandsTokenTypeNVX tokenType;
21296 uint32_t bindingUnit;
21297 uint32_t dynamicCount;
21298 uint32_t divisor;
21299 };
21300 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
21301
21302 struct IndirectCommandsLayoutCreateInfoNVX
21303 {
21304 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021305 : pipelineBindPoint( pipelineBindPoint_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021306 , flags( flags_ )
21307 , tokenCount( tokenCount_ )
21308 , pTokens( pTokens_ )
21309 {
21310 }
21311
21312 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21313 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021314 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021315 }
21316
21317 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21318 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021319 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021320 return *this;
21321 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021322 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
21323 {
21324 pNext = pNext_;
21325 return *this;
21326 }
21327
21328 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21329 {
21330 pipelineBindPoint = pipelineBindPoint_;
21331 return *this;
21332 }
21333
21334 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
21335 {
21336 flags = flags_;
21337 return *this;
21338 }
21339
21340 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
21341 {
21342 tokenCount = tokenCount_;
21343 return *this;
21344 }
21345
21346 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
21347 {
21348 pTokens = pTokens_;
21349 return *this;
21350 }
21351
21352 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
21353 {
21354 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
21355 }
21356
21357 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21358 {
21359 return ( sType == rhs.sType )
21360 && ( pNext == rhs.pNext )
21361 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21362 && ( flags == rhs.flags )
21363 && ( tokenCount == rhs.tokenCount )
21364 && ( pTokens == rhs.pTokens );
21365 }
21366
21367 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21368 {
21369 return !operator==( rhs );
21370 }
21371
21372 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021373 StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNVX;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021374
21375 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021376 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021377 PipelineBindPoint pipelineBindPoint;
21378 IndirectCommandsLayoutUsageFlagsNVX flags;
21379 uint32_t tokenCount;
21380 const IndirectCommandsLayoutTokenNVX* pTokens;
21381 };
21382 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
21383
21384 enum class ObjectEntryTypeNVX
21385 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021386 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
21387 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
21388 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
21389 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
21390 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021391 };
21392
21393 struct ObjectTableCreateInfoNVX
21394 {
21395 ObjectTableCreateInfoNVX( uint32_t objectCount_ = 0, const ObjectEntryTypeNVX* pObjectEntryTypes_ = nullptr, const uint32_t* pObjectEntryCounts_ = nullptr, const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ = nullptr, uint32_t maxUniformBuffersPerDescriptor_ = 0, uint32_t maxStorageBuffersPerDescriptor_ = 0, uint32_t maxStorageImagesPerDescriptor_ = 0, uint32_t maxSampledImagesPerDescriptor_ = 0, uint32_t maxPipelineLayouts_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021396 : objectCount( objectCount_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021397 , pObjectEntryTypes( pObjectEntryTypes_ )
21398 , pObjectEntryCounts( pObjectEntryCounts_ )
21399 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
21400 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
21401 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
21402 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
21403 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
21404 , maxPipelineLayouts( maxPipelineLayouts_ )
21405 {
21406 }
21407
21408 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
21409 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021410 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021411 }
21412
21413 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
21414 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021415 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021416 return *this;
21417 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021418 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
21419 {
21420 pNext = pNext_;
21421 return *this;
21422 }
21423
21424 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
21425 {
21426 objectCount = objectCount_;
21427 return *this;
21428 }
21429
21430 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
21431 {
21432 pObjectEntryTypes = pObjectEntryTypes_;
21433 return *this;
21434 }
21435
21436 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
21437 {
21438 pObjectEntryCounts = pObjectEntryCounts_;
21439 return *this;
21440 }
21441
21442 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
21443 {
21444 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
21445 return *this;
21446 }
21447
21448 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
21449 {
21450 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
21451 return *this;
21452 }
21453
21454 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
21455 {
21456 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
21457 return *this;
21458 }
21459
21460 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
21461 {
21462 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
21463 return *this;
21464 }
21465
21466 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
21467 {
21468 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
21469 return *this;
21470 }
21471
21472 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
21473 {
21474 maxPipelineLayouts = maxPipelineLayouts_;
21475 return *this;
21476 }
21477
21478 operator const VkObjectTableCreateInfoNVX&() const
21479 {
21480 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
21481 }
21482
21483 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
21484 {
21485 return ( sType == rhs.sType )
21486 && ( pNext == rhs.pNext )
21487 && ( objectCount == rhs.objectCount )
21488 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
21489 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
21490 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
21491 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
21492 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
21493 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
21494 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
21495 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
21496 }
21497
21498 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
21499 {
21500 return !operator==( rhs );
21501 }
21502
21503 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021504 StructureType sType = StructureType::eObjectTableCreateInfoNVX;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021505
21506 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021507 const void* pNext = nullptr;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021508 uint32_t objectCount;
21509 const ObjectEntryTypeNVX* pObjectEntryTypes;
21510 const uint32_t* pObjectEntryCounts;
21511 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
21512 uint32_t maxUniformBuffersPerDescriptor;
21513 uint32_t maxStorageBuffersPerDescriptor;
21514 uint32_t maxStorageImagesPerDescriptor;
21515 uint32_t maxSampledImagesPerDescriptor;
21516 uint32_t maxPipelineLayouts;
21517 };
21518 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
21519
21520 struct ObjectTableEntryNVX
21521 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021522 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021523 : type( type_ )
21524 , flags( flags_ )
21525 {
21526 }
21527
21528 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
21529 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021530 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021531 }
21532
21533 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
21534 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021535 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021536 return *this;
21537 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021538 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
21539 {
21540 type = type_;
21541 return *this;
21542 }
21543
21544 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21545 {
21546 flags = flags_;
21547 return *this;
21548 }
21549
21550 operator const VkObjectTableEntryNVX&() const
21551 {
21552 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
21553 }
21554
21555 bool operator==( ObjectTableEntryNVX const& rhs ) const
21556 {
21557 return ( type == rhs.type )
21558 && ( flags == rhs.flags );
21559 }
21560
21561 bool operator!=( ObjectTableEntryNVX const& rhs ) const
21562 {
21563 return !operator==( rhs );
21564 }
21565
21566 ObjectEntryTypeNVX type;
21567 ObjectEntryUsageFlagsNVX flags;
21568 };
21569 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
21570
21571 struct ObjectTablePipelineEntryNVX
21572 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021573 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021574 : type( type_ )
21575 , flags( flags_ )
21576 , pipeline( pipeline_ )
21577 {
21578 }
21579
21580 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
21581 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021582 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021583 }
21584
21585 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
21586 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021587 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021588 return *this;
21589 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021590 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
21591 {
21592 type = type_;
21593 return *this;
21594 }
21595
21596 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21597 {
21598 flags = flags_;
21599 return *this;
21600 }
21601
21602 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
21603 {
21604 pipeline = pipeline_;
21605 return *this;
21606 }
21607
21608 operator const VkObjectTablePipelineEntryNVX&() const
21609 {
21610 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
21611 }
21612
21613 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
21614 {
21615 return ( type == rhs.type )
21616 && ( flags == rhs.flags )
21617 && ( pipeline == rhs.pipeline );
21618 }
21619
21620 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
21621 {
21622 return !operator==( rhs );
21623 }
21624
21625 ObjectEntryTypeNVX type;
21626 ObjectEntryUsageFlagsNVX flags;
21627 Pipeline pipeline;
21628 };
21629 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
21630
21631 struct ObjectTableDescriptorSetEntryNVX
21632 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021633 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021634 : type( type_ )
21635 , flags( flags_ )
21636 , pipelineLayout( pipelineLayout_ )
21637 , descriptorSet( descriptorSet_ )
21638 {
21639 }
21640
21641 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
21642 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021643 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021644 }
21645
21646 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
21647 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021648 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021649 return *this;
21650 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021651 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
21652 {
21653 type = type_;
21654 return *this;
21655 }
21656
21657 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21658 {
21659 flags = flags_;
21660 return *this;
21661 }
21662
21663 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21664 {
21665 pipelineLayout = pipelineLayout_;
21666 return *this;
21667 }
21668
21669 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
21670 {
21671 descriptorSet = descriptorSet_;
21672 return *this;
21673 }
21674
21675 operator const VkObjectTableDescriptorSetEntryNVX&() const
21676 {
21677 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
21678 }
21679
21680 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21681 {
21682 return ( type == rhs.type )
21683 && ( flags == rhs.flags )
21684 && ( pipelineLayout == rhs.pipelineLayout )
21685 && ( descriptorSet == rhs.descriptorSet );
21686 }
21687
21688 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21689 {
21690 return !operator==( rhs );
21691 }
21692
21693 ObjectEntryTypeNVX type;
21694 ObjectEntryUsageFlagsNVX flags;
21695 PipelineLayout pipelineLayout;
21696 DescriptorSet descriptorSet;
21697 };
21698 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
21699
21700 struct ObjectTableVertexBufferEntryNVX
21701 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021702 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021703 : type( type_ )
21704 , flags( flags_ )
21705 , buffer( buffer_ )
21706 {
21707 }
21708
21709 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
21710 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021711 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021712 }
21713
21714 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
21715 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021716 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021717 return *this;
21718 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021719 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21720 {
21721 type = type_;
21722 return *this;
21723 }
21724
21725 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21726 {
21727 flags = flags_;
21728 return *this;
21729 }
21730
21731 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
21732 {
21733 buffer = buffer_;
21734 return *this;
21735 }
21736
21737 operator const VkObjectTableVertexBufferEntryNVX&() const
21738 {
21739 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
21740 }
21741
21742 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
21743 {
21744 return ( type == rhs.type )
21745 && ( flags == rhs.flags )
21746 && ( buffer == rhs.buffer );
21747 }
21748
21749 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
21750 {
21751 return !operator==( rhs );
21752 }
21753
21754 ObjectEntryTypeNVX type;
21755 ObjectEntryUsageFlagsNVX flags;
21756 Buffer buffer;
21757 };
21758 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
21759
21760 struct ObjectTableIndexBufferEntryNVX
21761 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021762 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021763 : type( type_ )
21764 , flags( flags_ )
21765 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070021766 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021767 {
21768 }
21769
21770 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
21771 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021772 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021773 }
21774
21775 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
21776 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021777 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021778 return *this;
21779 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021780 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21781 {
21782 type = type_;
21783 return *this;
21784 }
21785
21786 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21787 {
21788 flags = flags_;
21789 return *this;
21790 }
21791
21792 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
21793 {
21794 buffer = buffer_;
21795 return *this;
21796 }
21797
Mark Young39389872017-01-19 21:10:49 -070021798 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
21799 {
21800 indexType = indexType_;
21801 return *this;
21802 }
21803
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021804 operator const VkObjectTableIndexBufferEntryNVX&() const
21805 {
21806 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
21807 }
21808
21809 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
21810 {
21811 return ( type == rhs.type )
21812 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070021813 && ( buffer == rhs.buffer )
21814 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021815 }
21816
21817 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
21818 {
21819 return !operator==( rhs );
21820 }
21821
21822 ObjectEntryTypeNVX type;
21823 ObjectEntryUsageFlagsNVX flags;
21824 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070021825 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021826 };
21827 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
21828
21829 struct ObjectTablePushConstantEntryNVX
21830 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021831 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021832 : type( type_ )
21833 , flags( flags_ )
21834 , pipelineLayout( pipelineLayout_ )
21835 , stageFlags( stageFlags_ )
21836 {
21837 }
21838
21839 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
21840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021841 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021842 }
21843
21844 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
21845 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021846 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021847 return *this;
21848 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021849 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
21850 {
21851 type = type_;
21852 return *this;
21853 }
21854
21855 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21856 {
21857 flags = flags_;
21858 return *this;
21859 }
21860
21861 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21862 {
21863 pipelineLayout = pipelineLayout_;
21864 return *this;
21865 }
21866
21867 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
21868 {
21869 stageFlags = stageFlags_;
21870 return *this;
21871 }
21872
21873 operator const VkObjectTablePushConstantEntryNVX&() const
21874 {
21875 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
21876 }
21877
21878 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
21879 {
21880 return ( type == rhs.type )
21881 && ( flags == rhs.flags )
21882 && ( pipelineLayout == rhs.pipelineLayout )
21883 && ( stageFlags == rhs.stageFlags );
21884 }
21885
21886 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
21887 {
21888 return !operator==( rhs );
21889 }
21890
21891 ObjectEntryTypeNVX type;
21892 ObjectEntryUsageFlagsNVX flags;
21893 PipelineLayout pipelineLayout;
21894 ShaderStageFlags stageFlags;
21895 };
21896 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
21897
Mark Young0f183a82017-02-28 09:58:04 -070021898 enum class DescriptorSetLayoutCreateFlagBits
21899 {
21900 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
21901 };
21902
21903 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
21904
21905 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
21906 {
21907 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
21908 }
21909
21910 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
21911 {
21912 return ~( DescriptorSetLayoutCreateFlags( bits ) );
21913 }
21914
21915 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
21916 {
21917 enum
21918 {
21919 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
21920 };
21921 };
21922
21923 struct DescriptorSetLayoutCreateInfo
21924 {
21925 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021926 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070021927 , bindingCount( bindingCount_ )
21928 , pBindings( pBindings_ )
21929 {
21930 }
21931
21932 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
21933 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021934 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021935 }
21936
21937 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
21938 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021939 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021940 return *this;
21941 }
Mark Young0f183a82017-02-28 09:58:04 -070021942 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
21943 {
21944 pNext = pNext_;
21945 return *this;
21946 }
21947
21948 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
21949 {
21950 flags = flags_;
21951 return *this;
21952 }
21953
21954 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
21955 {
21956 bindingCount = bindingCount_;
21957 return *this;
21958 }
21959
21960 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
21961 {
21962 pBindings = pBindings_;
21963 return *this;
21964 }
21965
21966 operator const VkDescriptorSetLayoutCreateInfo&() const
21967 {
21968 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
21969 }
21970
21971 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
21972 {
21973 return ( sType == rhs.sType )
21974 && ( pNext == rhs.pNext )
21975 && ( flags == rhs.flags )
21976 && ( bindingCount == rhs.bindingCount )
21977 && ( pBindings == rhs.pBindings );
21978 }
21979
21980 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
21981 {
21982 return !operator==( rhs );
21983 }
21984
21985 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021986 StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo;
Mark Young0f183a82017-02-28 09:58:04 -070021987
21988 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070021989 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070021990 DescriptorSetLayoutCreateFlags flags;
21991 uint32_t bindingCount;
21992 const DescriptorSetLayoutBinding* pBindings;
21993 };
21994 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
21995
Mark Youngabc2d6e2017-07-07 07:59:56 -060021996 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021997 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021998 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21999 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22000 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22001 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
22002 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
22003 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022004 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,
22005 eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
22006 eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,
22007 eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
Mark Young0f183a82017-02-28 09:58:04 -070022008 };
22009
Mark Youngabc2d6e2017-07-07 07:59:56 -060022010 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022011
Mark Youngabc2d6e2017-07-07 07:59:56 -060022012 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022013 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022014 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022015 }
22016
Mark Youngabc2d6e2017-07-07 07:59:56 -060022017 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022018 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022019 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022020 }
22021
Mark Youngabc2d6e2017-07-07 07:59:56 -060022022 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022023 {
22024 enum
22025 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022026 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eDmaBufEXT) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eHostAllocationEXT) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eHostMappedForeignMemoryEXT)
Mark Young0f183a82017-02-28 09:58:04 -070022027 };
22028 };
22029
Mark Youngabc2d6e2017-07-07 07:59:56 -060022030 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022031 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022032 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022033 : handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022034 {
22035 }
22036
Mark Youngabc2d6e2017-07-07 07:59:56 -060022037 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022038 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022039 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022040 }
22041
Mark Youngabc2d6e2017-07-07 07:59:56 -060022042 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022043 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022044 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022045 return *this;
22046 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022047 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022048 {
22049 pNext = pNext_;
22050 return *this;
22051 }
22052
Mark Youngabc2d6e2017-07-07 07:59:56 -060022053 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022054 {
22055 handleType = handleType_;
22056 return *this;
22057 }
22058
Mark Youngabc2d6e2017-07-07 07:59:56 -060022059 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022060 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022061 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022062 }
22063
Mark Youngabc2d6e2017-07-07 07:59:56 -060022064 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022065 {
22066 return ( sType == rhs.sType )
22067 && ( pNext == rhs.pNext )
22068 && ( handleType == rhs.handleType );
22069 }
22070
Mark Youngabc2d6e2017-07-07 07:59:56 -060022071 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022072 {
22073 return !operator==( rhs );
22074 }
22075
22076 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022077 StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022078
22079 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022080 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022081 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022082 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022083 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022084
Mark Youngabc2d6e2017-07-07 07:59:56 -060022085 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022086 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022087 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022088 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070022089 , usage( usage_ )
22090 , handleType( handleType_ )
22091 {
22092 }
22093
Mark Youngabc2d6e2017-07-07 07:59:56 -060022094 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022095 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022096 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022097 }
22098
Mark Youngabc2d6e2017-07-07 07:59:56 -060022099 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022100 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022101 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022102 return *this;
22103 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022104 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022105 {
22106 pNext = pNext_;
22107 return *this;
22108 }
22109
Mark Youngabc2d6e2017-07-07 07:59:56 -060022110 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070022111 {
22112 flags = flags_;
22113 return *this;
22114 }
22115
Mark Youngabc2d6e2017-07-07 07:59:56 -060022116 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070022117 {
22118 usage = usage_;
22119 return *this;
22120 }
22121
Mark Youngabc2d6e2017-07-07 07:59:56 -060022122 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022123 {
22124 handleType = handleType_;
22125 return *this;
22126 }
22127
Mark Youngabc2d6e2017-07-07 07:59:56 -060022128 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022129 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022130 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022131 }
22132
Mark Youngabc2d6e2017-07-07 07:59:56 -060022133 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022134 {
22135 return ( sType == rhs.sType )
22136 && ( pNext == rhs.pNext )
22137 && ( flags == rhs.flags )
22138 && ( usage == rhs.usage )
22139 && ( handleType == rhs.handleType );
22140 }
22141
Mark Youngabc2d6e2017-07-07 07:59:56 -060022142 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022143 {
22144 return !operator==( rhs );
22145 }
22146
22147 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022148 StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022149
22150 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022151 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070022152 BufferCreateFlags flags;
22153 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022154 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022155 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022156 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022157
Mark Youngabc2d6e2017-07-07 07:59:56 -060022158 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022159 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022160 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022161 : handleTypes( handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022162 {
22163 }
22164
Mark Youngabc2d6e2017-07-07 07:59:56 -060022165 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022166 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022167 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022168 }
22169
Mark Youngabc2d6e2017-07-07 07:59:56 -060022170 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022171 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022172 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022173 return *this;
22174 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022175 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022176 {
22177 pNext = pNext_;
22178 return *this;
22179 }
22180
Mark Youngabc2d6e2017-07-07 07:59:56 -060022181 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022182 {
22183 handleTypes = handleTypes_;
22184 return *this;
22185 }
22186
Mark Youngabc2d6e2017-07-07 07:59:56 -060022187 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022188 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022189 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022190 }
22191
Mark Youngabc2d6e2017-07-07 07:59:56 -060022192 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022193 {
22194 return ( sType == rhs.sType )
22195 && ( pNext == rhs.pNext )
22196 && ( handleTypes == rhs.handleTypes );
22197 }
22198
Mark Youngabc2d6e2017-07-07 07:59:56 -060022199 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022200 {
22201 return !operator==( rhs );
22202 }
22203
22204 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022205 StructureType sType = StructureType::eExternalMemoryImageCreateInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022206
22207 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022208 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022209 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022210 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022211 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022212
Mark Youngabc2d6e2017-07-07 07:59:56 -060022213 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022214 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022215 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022216 : handleTypes( handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022217 {
22218 }
22219
Mark Youngabc2d6e2017-07-07 07:59:56 -060022220 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022221 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022222 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022223 }
22224
Mark Youngabc2d6e2017-07-07 07:59:56 -060022225 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022226 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022227 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022228 return *this;
22229 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022230 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022231 {
22232 pNext = pNext_;
22233 return *this;
22234 }
22235
Mark Youngabc2d6e2017-07-07 07:59:56 -060022236 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022237 {
22238 handleTypes = handleTypes_;
22239 return *this;
22240 }
22241
Mark Youngabc2d6e2017-07-07 07:59:56 -060022242 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022243 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022244 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022245 }
22246
Mark Youngabc2d6e2017-07-07 07:59:56 -060022247 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022248 {
22249 return ( sType == rhs.sType )
22250 && ( pNext == rhs.pNext )
22251 && ( handleTypes == rhs.handleTypes );
22252 }
22253
Mark Youngabc2d6e2017-07-07 07:59:56 -060022254 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022255 {
22256 return !operator==( rhs );
22257 }
22258
22259 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022260 StructureType sType = StructureType::eExternalMemoryBufferCreateInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022261
22262 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022263 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022264 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022265 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022266 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022267
Mark Youngabc2d6e2017-07-07 07:59:56 -060022268 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022269 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022270 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022271 : handleTypes( handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022272 {
22273 }
22274
Mark Youngabc2d6e2017-07-07 07:59:56 -060022275 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022276 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022277 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022278 }
22279
Mark Youngabc2d6e2017-07-07 07:59:56 -060022280 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022281 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022282 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022283 return *this;
22284 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022285 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022286 {
22287 pNext = pNext_;
22288 return *this;
22289 }
22290
Mark Youngabc2d6e2017-07-07 07:59:56 -060022291 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022292 {
22293 handleTypes = handleTypes_;
22294 return *this;
22295 }
22296
Mark Youngabc2d6e2017-07-07 07:59:56 -060022297 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022298 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022299 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022300 }
22301
Mark Youngabc2d6e2017-07-07 07:59:56 -060022302 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022303 {
22304 return ( sType == rhs.sType )
22305 && ( pNext == rhs.pNext )
22306 && ( handleTypes == rhs.handleTypes );
22307 }
22308
Mark Youngabc2d6e2017-07-07 07:59:56 -060022309 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022310 {
22311 return !operator==( rhs );
22312 }
22313
22314 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022315 StructureType sType = StructureType::eExportMemoryAllocateInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022316
22317 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022318 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022319 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022320 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022321 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022322
Mark Youngabc2d6e2017-07-07 07:59:56 -060022323#ifdef VK_USE_PLATFORM_WIN32_KHR
22324 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022325 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022326 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022327 : handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022328 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022329 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022330 {
22331 }
22332
Mark Youngabc2d6e2017-07-07 07:59:56 -060022333 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022334 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022335 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022336 }
22337
Mark Youngabc2d6e2017-07-07 07:59:56 -060022338 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022339 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022340 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022341 return *this;
22342 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022343 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022344 {
22345 pNext = pNext_;
22346 return *this;
22347 }
22348
Mark Youngabc2d6e2017-07-07 07:59:56 -060022349 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022350 {
22351 handleType = handleType_;
22352 return *this;
22353 }
22354
Mark Youngabc2d6e2017-07-07 07:59:56 -060022355 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070022356 {
22357 handle = handle_;
22358 return *this;
22359 }
22360
Mark Youngabc2d6e2017-07-07 07:59:56 -060022361 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022362 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022363 name = name_;
22364 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070022365 }
22366
Mark Youngabc2d6e2017-07-07 07:59:56 -060022367 operator const VkImportMemoryWin32HandleInfoKHR&() const
22368 {
22369 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
22370 }
22371
22372 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022373 {
22374 return ( sType == rhs.sType )
22375 && ( pNext == rhs.pNext )
22376 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022377 && ( handle == rhs.handle )
22378 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070022379 }
22380
Mark Youngabc2d6e2017-07-07 07:59:56 -060022381 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022382 {
22383 return !operator==( rhs );
22384 }
22385
22386 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022387 StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022388
22389 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022390 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022391 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022392 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022393 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070022394 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022395 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22396#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022397
Mark Youngabc2d6e2017-07-07 07:59:56 -060022398#ifdef VK_USE_PLATFORM_WIN32_KHR
22399 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022400 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022401 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022402 : memory( memory_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022403 , handleType( handleType_ )
22404 {
22405 }
22406
22407 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
22408 {
22409 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22410 }
22411
22412 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
22413 {
22414 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22415 return *this;
22416 }
22417 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
22418 {
22419 pNext = pNext_;
22420 return *this;
22421 }
22422
22423 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
22424 {
22425 memory = memory_;
22426 return *this;
22427 }
22428
22429 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22430 {
22431 handleType = handleType_;
22432 return *this;
22433 }
22434
22435 operator const VkMemoryGetWin32HandleInfoKHR&() const
22436 {
22437 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
22438 }
22439
22440 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
22441 {
22442 return ( sType == rhs.sType )
22443 && ( pNext == rhs.pNext )
22444 && ( memory == rhs.memory )
22445 && ( handleType == rhs.handleType );
22446 }
22447
22448 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
22449 {
22450 return !operator==( rhs );
22451 }
22452
22453 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022454 StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022455
22456 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022457 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022458 DeviceMemory memory;
22459 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22460 };
22461 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22462#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22463
22464 struct ImportMemoryFdInfoKHR
22465 {
22466 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022467 : handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022468 , fd( fd_ )
22469 {
22470 }
22471
Mark Youngabc2d6e2017-07-07 07:59:56 -060022472 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022473 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022474 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022475 }
22476
Mark Youngabc2d6e2017-07-07 07:59:56 -060022477 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022478 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022479 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022480 return *this;
22481 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022482 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022483 {
22484 pNext = pNext_;
22485 return *this;
22486 }
22487
Mark Youngabc2d6e2017-07-07 07:59:56 -060022488 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022489 {
22490 handleType = handleType_;
22491 return *this;
22492 }
22493
Mark Youngabc2d6e2017-07-07 07:59:56 -060022494 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070022495 {
22496 fd = fd_;
22497 return *this;
22498 }
22499
Mark Youngabc2d6e2017-07-07 07:59:56 -060022500 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022501 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022502 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022503 }
22504
Mark Youngabc2d6e2017-07-07 07:59:56 -060022505 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022506 {
22507 return ( sType == rhs.sType )
22508 && ( pNext == rhs.pNext )
22509 && ( handleType == rhs.handleType )
22510 && ( fd == rhs.fd );
22511 }
22512
Mark Youngabc2d6e2017-07-07 07:59:56 -060022513 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022514 {
22515 return !operator==( rhs );
22516 }
22517
22518 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022519 StructureType sType = StructureType::eImportMemoryFdInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022520
22521 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022522 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022523 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022524 int fd;
22525 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022526 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022527
Mark Youngabc2d6e2017-07-07 07:59:56 -060022528 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022529 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022530 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022531 : memory( memory_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022532 , handleType( handleType_ )
22533 {
22534 }
22535
22536 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
22537 {
22538 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22539 }
22540
22541 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
22542 {
22543 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22544 return *this;
22545 }
22546 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
22547 {
22548 pNext = pNext_;
22549 return *this;
22550 }
22551
22552 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
22553 {
22554 memory = memory_;
22555 return *this;
22556 }
22557
22558 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22559 {
22560 handleType = handleType_;
22561 return *this;
22562 }
22563
22564 operator const VkMemoryGetFdInfoKHR&() const
22565 {
22566 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
22567 }
22568
22569 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
22570 {
22571 return ( sType == rhs.sType )
22572 && ( pNext == rhs.pNext )
22573 && ( memory == rhs.memory )
22574 && ( handleType == rhs.handleType );
22575 }
22576
22577 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
22578 {
22579 return !operator==( rhs );
22580 }
22581
22582 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022583 StructureType sType = StructureType::eMemoryGetFdInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022584
22585 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022586 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022587 DeviceMemory memory;
22588 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22589 };
22590 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
22591
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022592 struct ImportMemoryHostPointerInfoEXT
22593 {
22594 ImportMemoryHostPointerInfoEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, void* pHostPointer_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022595 : handleType( handleType_ )
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022596 , pHostPointer( pHostPointer_ )
22597 {
22598 }
22599
22600 ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs )
22601 {
22602 memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
22603 }
22604
22605 ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs )
22606 {
22607 memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
22608 return *this;
22609 }
22610 ImportMemoryHostPointerInfoEXT& setPNext( const void* pNext_ )
22611 {
22612 pNext = pNext_;
22613 return *this;
22614 }
22615
22616 ImportMemoryHostPointerInfoEXT& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22617 {
22618 handleType = handleType_;
22619 return *this;
22620 }
22621
22622 ImportMemoryHostPointerInfoEXT& setPHostPointer( void* pHostPointer_ )
22623 {
22624 pHostPointer = pHostPointer_;
22625 return *this;
22626 }
22627
22628 operator const VkImportMemoryHostPointerInfoEXT&() const
22629 {
22630 return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(this);
22631 }
22632
22633 bool operator==( ImportMemoryHostPointerInfoEXT const& rhs ) const
22634 {
22635 return ( sType == rhs.sType )
22636 && ( pNext == rhs.pNext )
22637 && ( handleType == rhs.handleType )
22638 && ( pHostPointer == rhs.pHostPointer );
22639 }
22640
22641 bool operator!=( ImportMemoryHostPointerInfoEXT const& rhs ) const
22642 {
22643 return !operator==( rhs );
22644 }
22645
22646 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022647 StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT;
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022648
22649 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022650 const void* pNext = nullptr;
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022651 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22652 void* pHostPointer;
22653 };
22654 static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "struct and wrapper have different size!" );
22655
Mark Youngabc2d6e2017-07-07 07:59:56 -060022656 enum class ExternalMemoryFeatureFlagBitsKHR
22657 {
22658 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
22659 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
22660 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022661 };
22662
Mark Youngabc2d6e2017-07-07 07:59:56 -060022663 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022664
Mark Youngabc2d6e2017-07-07 07:59:56 -060022665 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022666 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022667 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022668 }
22669
Mark Youngabc2d6e2017-07-07 07:59:56 -060022670 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022671 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022672 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022673 }
22674
Mark Youngabc2d6e2017-07-07 07:59:56 -060022675 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022676 {
22677 enum
22678 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022679 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022680 };
22681 };
22682
Mark Youngabc2d6e2017-07-07 07:59:56 -060022683 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022684 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022685 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022686 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022687 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022688 }
22689
Mark Youngabc2d6e2017-07-07 07:59:56 -060022690 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022691 {
22692 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
22693 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22694 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
22695 }
22696
Mark Youngabc2d6e2017-07-07 07:59:56 -060022697 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022698 {
22699 return !operator==( rhs );
22700 }
22701
Mark Youngabc2d6e2017-07-07 07:59:56 -060022702 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
22703 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
22704 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022705 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022706 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022707
Mark Youngabc2d6e2017-07-07 07:59:56 -060022708 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022709 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022710 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022711 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022712 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022713 }
22714
Mark Youngabc2d6e2017-07-07 07:59:56 -060022715 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022716 {
22717 return ( sType == rhs.sType )
22718 && ( pNext == rhs.pNext )
22719 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22720 }
22721
Mark Youngabc2d6e2017-07-07 07:59:56 -060022722 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022723 {
22724 return !operator==( rhs );
22725 }
22726
22727 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022728 StructureType sType = StructureType::eExternalImageFormatPropertiesKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022729
22730 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022731 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022732 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022733 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022734 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022735
Mark Youngabc2d6e2017-07-07 07:59:56 -060022736 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022737 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022738 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022739 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022740 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022741 }
22742
Mark Youngabc2d6e2017-07-07 07:59:56 -060022743 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022744 {
22745 return ( sType == rhs.sType )
22746 && ( pNext == rhs.pNext )
22747 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22748 }
22749
Mark Youngabc2d6e2017-07-07 07:59:56 -060022750 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022751 {
22752 return !operator==( rhs );
22753 }
22754
22755 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022756 StructureType sType = StructureType::eExternalBufferPropertiesKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022757
22758 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022759 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022760 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022761 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022762 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022763
Mark Youngabc2d6e2017-07-07 07:59:56 -060022764 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022765 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022766 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22767 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22768 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22769 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
22770 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022771 };
22772
Mark Youngabc2d6e2017-07-07 07:59:56 -060022773 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022774
Mark Youngabc2d6e2017-07-07 07:59:56 -060022775 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022776 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022777 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022778 }
22779
Mark Youngabc2d6e2017-07-07 07:59:56 -060022780 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022781 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022782 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022783 }
22784
Mark Youngabc2d6e2017-07-07 07:59:56 -060022785 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022786 {
22787 enum
22788 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022789 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070022790 };
22791 };
22792
Mark Youngabc2d6e2017-07-07 07:59:56 -060022793 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022794 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022795 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022796 : handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022797 {
22798 }
22799
Mark Youngabc2d6e2017-07-07 07:59:56 -060022800 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022801 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022802 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022803 }
22804
Mark Youngabc2d6e2017-07-07 07:59:56 -060022805 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022806 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022807 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022808 return *this;
22809 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022810 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022811 {
22812 pNext = pNext_;
22813 return *this;
22814 }
22815
Mark Youngabc2d6e2017-07-07 07:59:56 -060022816 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022817 {
22818 handleType = handleType_;
22819 return *this;
22820 }
22821
Mark Youngabc2d6e2017-07-07 07:59:56 -060022822 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022823 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022824 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022825 }
22826
Mark Youngabc2d6e2017-07-07 07:59:56 -060022827 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022828 {
22829 return ( sType == rhs.sType )
22830 && ( pNext == rhs.pNext )
22831 && ( handleType == rhs.handleType );
22832 }
22833
Mark Youngabc2d6e2017-07-07 07:59:56 -060022834 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022835 {
22836 return !operator==( rhs );
22837 }
22838
22839 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022840 StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022841
22842 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022843 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022844 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022845 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022846 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022847
Mark Youngabc2d6e2017-07-07 07:59:56 -060022848 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022849 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022850 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022851 : handleTypes( handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022852 {
22853 }
22854
Mark Youngabc2d6e2017-07-07 07:59:56 -060022855 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022856 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022857 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022858 }
22859
Mark Youngabc2d6e2017-07-07 07:59:56 -060022860 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022861 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022862 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022863 return *this;
22864 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022865 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022866 {
22867 pNext = pNext_;
22868 return *this;
22869 }
22870
Mark Youngabc2d6e2017-07-07 07:59:56 -060022871 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022872 {
22873 handleTypes = handleTypes_;
22874 return *this;
22875 }
22876
Mark Youngabc2d6e2017-07-07 07:59:56 -060022877 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022878 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022879 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022880 }
22881
Mark Youngabc2d6e2017-07-07 07:59:56 -060022882 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022883 {
22884 return ( sType == rhs.sType )
22885 && ( pNext == rhs.pNext )
22886 && ( handleTypes == rhs.handleTypes );
22887 }
22888
Mark Youngabc2d6e2017-07-07 07:59:56 -060022889 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022890 {
22891 return !operator==( rhs );
22892 }
22893
22894 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022895 StructureType sType = StructureType::eExportSemaphoreCreateInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022896
22897 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022898 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022899 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022900 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022901 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022902
Mark Youngabc2d6e2017-07-07 07:59:56 -060022903#ifdef VK_USE_PLATFORM_WIN32_KHR
22904 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022905 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022906 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022907 : semaphore( semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022908 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022909 {
22910 }
22911
Mark Youngabc2d6e2017-07-07 07:59:56 -060022912 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022913 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022914 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022915 }
22916
Mark Youngabc2d6e2017-07-07 07:59:56 -060022917 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022918 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022919 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022920 return *this;
22921 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022922 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022923 {
22924 pNext = pNext_;
22925 return *this;
22926 }
22927
Mark Youngabc2d6e2017-07-07 07:59:56 -060022928 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022929 {
22930 semaphore = semaphore_;
22931 return *this;
22932 }
22933
Mark Youngabc2d6e2017-07-07 07:59:56 -060022934 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022935 {
22936 handleType = handleType_;
22937 return *this;
22938 }
22939
Mark Youngabc2d6e2017-07-07 07:59:56 -060022940 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022941 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022942 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022943 }
22944
Mark Youngabc2d6e2017-07-07 07:59:56 -060022945 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022946 {
22947 return ( sType == rhs.sType )
22948 && ( pNext == rhs.pNext )
22949 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022950 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022951 }
22952
Mark Youngabc2d6e2017-07-07 07:59:56 -060022953 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022954 {
22955 return !operator==( rhs );
22956 }
22957
22958 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022959 StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070022960
22961 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022962 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070022963 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022964 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022965 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022966 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22967#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022968
Mark Youngabc2d6e2017-07-07 07:59:56 -060022969 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022970 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022971 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070022972 : semaphore( semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022973 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022974 {
22975 }
22976
Mark Youngabc2d6e2017-07-07 07:59:56 -060022977 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022978 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022979 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022980 }
22981
Mark Youngabc2d6e2017-07-07 07:59:56 -060022982 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022983 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022984 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022985 return *this;
22986 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022987 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022988 {
22989 pNext = pNext_;
22990 return *this;
22991 }
22992
Mark Youngabc2d6e2017-07-07 07:59:56 -060022993 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022994 {
22995 semaphore = semaphore_;
22996 return *this;
22997 }
22998
Mark Youngabc2d6e2017-07-07 07:59:56 -060022999 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070023000 {
23001 handleType = handleType_;
23002 return *this;
23003 }
23004
Mark Youngabc2d6e2017-07-07 07:59:56 -060023005 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023006 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023007 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023008 }
23009
Mark Youngabc2d6e2017-07-07 07:59:56 -060023010 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023011 {
23012 return ( sType == rhs.sType )
23013 && ( pNext == rhs.pNext )
23014 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023015 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070023016 }
23017
Mark Youngabc2d6e2017-07-07 07:59:56 -060023018 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023019 {
23020 return !operator==( rhs );
23021 }
23022
23023 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023024 StructureType sType = StructureType::eSemaphoreGetFdInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070023025
23026 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023027 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070023028 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023029 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070023030 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023031 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023032
Mark Youngabc2d6e2017-07-07 07:59:56 -060023033 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070023034 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023035 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
23036 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070023037 };
23038
Mark Youngabc2d6e2017-07-07 07:59:56 -060023039 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070023040
Mark Youngabc2d6e2017-07-07 07:59:56 -060023041 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070023042 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023043 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070023044 }
23045
Mark Youngabc2d6e2017-07-07 07:59:56 -060023046 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070023047 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023048 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070023049 }
23050
Mark Youngabc2d6e2017-07-07 07:59:56 -060023051 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070023052 {
23053 enum
23054 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023055 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070023056 };
23057 };
23058
Mark Youngabc2d6e2017-07-07 07:59:56 -060023059 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070023060 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023061 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023062 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023063 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023064 }
23065
Mark Youngabc2d6e2017-07-07 07:59:56 -060023066 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023067 {
23068 return ( sType == rhs.sType )
23069 && ( pNext == rhs.pNext )
23070 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23071 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23072 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
23073 }
23074
Mark Youngabc2d6e2017-07-07 07:59:56 -060023075 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023076 {
23077 return !operator==( rhs );
23078 }
23079
23080 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023081 StructureType sType = StructureType::eExternalSemaphorePropertiesKHR;
Mark Young0f183a82017-02-28 09:58:04 -070023082
23083 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023084 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023085 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
23086 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
23087 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070023088 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023089 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
23090
23091 enum class SemaphoreImportFlagBitsKHR
23092 {
23093 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
23094 };
23095
23096 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
23097
23098 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
23099 {
23100 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
23101 }
23102
23103 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
23104 {
23105 return ~( SemaphoreImportFlagsKHR( bits ) );
23106 }
23107
23108 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
23109 {
23110 enum
23111 {
23112 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
23113 };
23114 };
23115
23116#ifdef VK_USE_PLATFORM_WIN32_KHR
23117 struct ImportSemaphoreWin32HandleInfoKHR
23118 {
23119 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023120 : semaphore( semaphore_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023121 , flags( flags_ )
23122 , handleType( handleType_ )
23123 , handle( handle_ )
23124 , name( name_ )
23125 {
23126 }
23127
23128 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23129 {
23130 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23131 }
23132
23133 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23134 {
23135 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23136 return *this;
23137 }
23138 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
23139 {
23140 pNext = pNext_;
23141 return *this;
23142 }
23143
23144 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
23145 {
23146 semaphore = semaphore_;
23147 return *this;
23148 }
23149
23150 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23151 {
23152 flags = flags_;
23153 return *this;
23154 }
23155
23156 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23157 {
23158 handleType = handleType_;
23159 return *this;
23160 }
23161
23162 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23163 {
23164 handle = handle_;
23165 return *this;
23166 }
23167
23168 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
23169 {
23170 name = name_;
23171 return *this;
23172 }
23173
23174 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
23175 {
23176 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
23177 }
23178
23179 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23180 {
23181 return ( sType == rhs.sType )
23182 && ( pNext == rhs.pNext )
23183 && ( semaphore == rhs.semaphore )
23184 && ( flags == rhs.flags )
23185 && ( handleType == rhs.handleType )
23186 && ( handle == rhs.handle )
23187 && ( name == rhs.name );
23188 }
23189
23190 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23191 {
23192 return !operator==( rhs );
23193 }
23194
23195 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023196 StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023197
23198 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023199 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023200 Semaphore semaphore;
23201 SemaphoreImportFlagsKHR flags;
23202 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23203 HANDLE handle;
23204 LPCWSTR name;
23205 };
23206 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23207#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23208
23209 struct ImportSemaphoreFdInfoKHR
23210 {
23211 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023212 : semaphore( semaphore_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023213 , flags( flags_ )
23214 , handleType( handleType_ )
23215 , fd( fd_ )
23216 {
23217 }
23218
23219 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
23220 {
23221 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23222 }
23223
23224 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
23225 {
23226 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23227 return *this;
23228 }
23229 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
23230 {
23231 pNext = pNext_;
23232 return *this;
23233 }
23234
23235 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
23236 {
23237 semaphore = semaphore_;
23238 return *this;
23239 }
23240
23241 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23242 {
23243 flags = flags_;
23244 return *this;
23245 }
23246
23247 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23248 {
23249 handleType = handleType_;
23250 return *this;
23251 }
23252
23253 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
23254 {
23255 fd = fd_;
23256 return *this;
23257 }
23258
23259 operator const VkImportSemaphoreFdInfoKHR&() const
23260 {
23261 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
23262 }
23263
23264 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
23265 {
23266 return ( sType == rhs.sType )
23267 && ( pNext == rhs.pNext )
23268 && ( semaphore == rhs.semaphore )
23269 && ( flags == rhs.flags )
23270 && ( handleType == rhs.handleType )
23271 && ( fd == rhs.fd );
23272 }
23273
23274 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
23275 {
23276 return !operator==( rhs );
23277 }
23278
23279 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023280 StructureType sType = StructureType::eImportSemaphoreFdInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023281
23282 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023283 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023284 Semaphore semaphore;
23285 SemaphoreImportFlagsKHR flags;
23286 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23287 int fd;
23288 };
23289 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
23290
23291 enum class ExternalFenceHandleTypeFlagBitsKHR
23292 {
23293 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
23294 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
23295 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
23296 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
23297 };
23298
23299 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
23300
23301 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
23302 {
23303 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
23304 }
23305
23306 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
23307 {
23308 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
23309 }
23310
23311 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
23312 {
23313 enum
23314 {
23315 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
23316 };
23317 };
23318
23319 struct PhysicalDeviceExternalFenceInfoKHR
23320 {
23321 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023322 : handleType( handleType_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023323 {
23324 }
23325
23326 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23327 {
23328 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23329 }
23330
23331 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23332 {
23333 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23334 return *this;
23335 }
23336 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
23337 {
23338 pNext = pNext_;
23339 return *this;
23340 }
23341
23342 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23343 {
23344 handleType = handleType_;
23345 return *this;
23346 }
23347
23348 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
23349 {
23350 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
23351 }
23352
23353 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23354 {
23355 return ( sType == rhs.sType )
23356 && ( pNext == rhs.pNext )
23357 && ( handleType == rhs.handleType );
23358 }
23359
23360 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23361 {
23362 return !operator==( rhs );
23363 }
23364
23365 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023366 StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023367
23368 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023369 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023370 ExternalFenceHandleTypeFlagBitsKHR handleType;
23371 };
23372 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
23373
23374 struct ExportFenceCreateInfoKHR
23375 {
23376 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023377 : handleTypes( handleTypes_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023378 {
23379 }
23380
23381 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
23382 {
23383 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23384 }
23385
23386 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
23387 {
23388 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23389 return *this;
23390 }
23391 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
23392 {
23393 pNext = pNext_;
23394 return *this;
23395 }
23396
23397 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
23398 {
23399 handleTypes = handleTypes_;
23400 return *this;
23401 }
23402
23403 operator const VkExportFenceCreateInfoKHR&() const
23404 {
23405 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
23406 }
23407
23408 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
23409 {
23410 return ( sType == rhs.sType )
23411 && ( pNext == rhs.pNext )
23412 && ( handleTypes == rhs.handleTypes );
23413 }
23414
23415 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
23416 {
23417 return !operator==( rhs );
23418 }
23419
23420 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023421 StructureType sType = StructureType::eExportFenceCreateInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023422
23423 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023424 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023425 ExternalFenceHandleTypeFlagsKHR handleTypes;
23426 };
23427 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
23428
23429#ifdef VK_USE_PLATFORM_WIN32_KHR
23430 struct FenceGetWin32HandleInfoKHR
23431 {
23432 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023433 : fence( fence_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023434 , handleType( handleType_ )
23435 {
23436 }
23437
23438 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
23439 {
23440 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23441 }
23442
23443 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
23444 {
23445 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23446 return *this;
23447 }
23448 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
23449 {
23450 pNext = pNext_;
23451 return *this;
23452 }
23453
23454 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
23455 {
23456 fence = fence_;
23457 return *this;
23458 }
23459
23460 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23461 {
23462 handleType = handleType_;
23463 return *this;
23464 }
23465
23466 operator const VkFenceGetWin32HandleInfoKHR&() const
23467 {
23468 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
23469 }
23470
23471 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
23472 {
23473 return ( sType == rhs.sType )
23474 && ( pNext == rhs.pNext )
23475 && ( fence == rhs.fence )
23476 && ( handleType == rhs.handleType );
23477 }
23478
23479 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
23480 {
23481 return !operator==( rhs );
23482 }
23483
23484 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023485 StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023486
23487 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023488 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023489 Fence fence;
23490 ExternalFenceHandleTypeFlagBitsKHR handleType;
23491 };
23492 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23493#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23494
23495 struct FenceGetFdInfoKHR
23496 {
23497 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023498 : fence( fence_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023499 , handleType( handleType_ )
23500 {
23501 }
23502
23503 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
23504 {
23505 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23506 }
23507
23508 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
23509 {
23510 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23511 return *this;
23512 }
23513 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
23514 {
23515 pNext = pNext_;
23516 return *this;
23517 }
23518
23519 FenceGetFdInfoKHR& setFence( Fence fence_ )
23520 {
23521 fence = fence_;
23522 return *this;
23523 }
23524
23525 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23526 {
23527 handleType = handleType_;
23528 return *this;
23529 }
23530
23531 operator const VkFenceGetFdInfoKHR&() const
23532 {
23533 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
23534 }
23535
23536 bool operator==( FenceGetFdInfoKHR const& rhs ) const
23537 {
23538 return ( sType == rhs.sType )
23539 && ( pNext == rhs.pNext )
23540 && ( fence == rhs.fence )
23541 && ( handleType == rhs.handleType );
23542 }
23543
23544 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
23545 {
23546 return !operator==( rhs );
23547 }
23548
23549 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023550 StructureType sType = StructureType::eFenceGetFdInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023551
23552 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023553 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023554 Fence fence;
23555 ExternalFenceHandleTypeFlagBitsKHR handleType;
23556 };
23557 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
23558
23559 enum class ExternalFenceFeatureFlagBitsKHR
23560 {
23561 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
23562 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
23563 };
23564
23565 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
23566
23567 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
23568 {
23569 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
23570 }
23571
23572 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
23573 {
23574 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
23575 }
23576
23577 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
23578 {
23579 enum
23580 {
23581 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
23582 };
23583 };
23584
23585 struct ExternalFencePropertiesKHR
23586 {
23587 operator const VkExternalFencePropertiesKHR&() const
23588 {
23589 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
23590 }
23591
23592 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
23593 {
23594 return ( sType == rhs.sType )
23595 && ( pNext == rhs.pNext )
23596 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23597 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23598 && ( externalFenceFeatures == rhs.externalFenceFeatures );
23599 }
23600
23601 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
23602 {
23603 return !operator==( rhs );
23604 }
23605
23606 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023607 StructureType sType = StructureType::eExternalFencePropertiesKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023608
23609 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023610 void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023611 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
23612 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
23613 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
23614 };
23615 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
23616
23617 enum class FenceImportFlagBitsKHR
23618 {
23619 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
23620 };
23621
23622 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
23623
23624 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
23625 {
23626 return FenceImportFlagsKHR( bit0 ) | bit1;
23627 }
23628
23629 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
23630 {
23631 return ~( FenceImportFlagsKHR( bits ) );
23632 }
23633
23634 template <> struct FlagTraits<FenceImportFlagBitsKHR>
23635 {
23636 enum
23637 {
23638 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
23639 };
23640 };
23641
23642#ifdef VK_USE_PLATFORM_WIN32_KHR
23643 struct ImportFenceWin32HandleInfoKHR
23644 {
23645 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023646 : fence( fence_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023647 , flags( flags_ )
23648 , handleType( handleType_ )
23649 , handle( handle_ )
23650 , name( name_ )
23651 {
23652 }
23653
23654 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
23655 {
23656 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23657 }
23658
23659 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
23660 {
23661 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23662 return *this;
23663 }
23664 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
23665 {
23666 pNext = pNext_;
23667 return *this;
23668 }
23669
23670 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
23671 {
23672 fence = fence_;
23673 return *this;
23674 }
23675
23676 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23677 {
23678 flags = flags_;
23679 return *this;
23680 }
23681
23682 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23683 {
23684 handleType = handleType_;
23685 return *this;
23686 }
23687
23688 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23689 {
23690 handle = handle_;
23691 return *this;
23692 }
23693
23694 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
23695 {
23696 name = name_;
23697 return *this;
23698 }
23699
23700 operator const VkImportFenceWin32HandleInfoKHR&() const
23701 {
23702 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
23703 }
23704
23705 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
23706 {
23707 return ( sType == rhs.sType )
23708 && ( pNext == rhs.pNext )
23709 && ( fence == rhs.fence )
23710 && ( flags == rhs.flags )
23711 && ( handleType == rhs.handleType )
23712 && ( handle == rhs.handle )
23713 && ( name == rhs.name );
23714 }
23715
23716 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
23717 {
23718 return !operator==( rhs );
23719 }
23720
23721 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023722 StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023723
23724 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023725 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023726 Fence fence;
23727 FenceImportFlagsKHR flags;
23728 ExternalFenceHandleTypeFlagBitsKHR handleType;
23729 HANDLE handle;
23730 LPCWSTR name;
23731 };
23732 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23733#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23734
23735 struct ImportFenceFdInfoKHR
23736 {
23737 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023738 : fence( fence_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023739 , flags( flags_ )
23740 , handleType( handleType_ )
23741 , fd( fd_ )
23742 {
23743 }
23744
23745 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
23746 {
23747 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23748 }
23749
23750 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
23751 {
23752 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23753 return *this;
23754 }
23755 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
23756 {
23757 pNext = pNext_;
23758 return *this;
23759 }
23760
23761 ImportFenceFdInfoKHR& setFence( Fence fence_ )
23762 {
23763 fence = fence_;
23764 return *this;
23765 }
23766
23767 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23768 {
23769 flags = flags_;
23770 return *this;
23771 }
23772
23773 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23774 {
23775 handleType = handleType_;
23776 return *this;
23777 }
23778
23779 ImportFenceFdInfoKHR& setFd( int fd_ )
23780 {
23781 fd = fd_;
23782 return *this;
23783 }
23784
23785 operator const VkImportFenceFdInfoKHR&() const
23786 {
23787 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
23788 }
23789
23790 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
23791 {
23792 return ( sType == rhs.sType )
23793 && ( pNext == rhs.pNext )
23794 && ( fence == rhs.fence )
23795 && ( flags == rhs.flags )
23796 && ( handleType == rhs.handleType )
23797 && ( fd == rhs.fd );
23798 }
23799
23800 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
23801 {
23802 return !operator==( rhs );
23803 }
23804
23805 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023806 StructureType sType = StructureType::eImportFenceFdInfoKHR;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023807
23808 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023809 const void* pNext = nullptr;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023810 Fence fence;
23811 FenceImportFlagsKHR flags;
23812 ExternalFenceHandleTypeFlagBitsKHR handleType;
23813 int fd;
23814 };
23815 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023816
Mark Young39389872017-01-19 21:10:49 -070023817 enum class SurfaceCounterFlagBitsEXT
23818 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023819 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070023820 };
23821
23822 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
23823
23824 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
23825 {
23826 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
23827 }
23828
23829 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
23830 {
23831 return ~( SurfaceCounterFlagsEXT( bits ) );
23832 }
23833
23834 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
23835 {
23836 enum
23837 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023838 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070023839 };
23840 };
23841
23842 struct SurfaceCapabilities2EXT
23843 {
23844 operator const VkSurfaceCapabilities2EXT&() const
23845 {
23846 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
23847 }
23848
23849 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
23850 {
23851 return ( sType == rhs.sType )
23852 && ( pNext == rhs.pNext )
23853 && ( minImageCount == rhs.minImageCount )
23854 && ( maxImageCount == rhs.maxImageCount )
23855 && ( currentExtent == rhs.currentExtent )
23856 && ( minImageExtent == rhs.minImageExtent )
23857 && ( maxImageExtent == rhs.maxImageExtent )
23858 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
23859 && ( supportedTransforms == rhs.supportedTransforms )
23860 && ( currentTransform == rhs.currentTransform )
23861 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
23862 && ( supportedUsageFlags == rhs.supportedUsageFlags )
23863 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
23864 }
23865
23866 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
23867 {
23868 return !operator==( rhs );
23869 }
23870
23871 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023872 StructureType sType = StructureType::eSurfaceCapabilities2EXT;
Mark Young39389872017-01-19 21:10:49 -070023873
23874 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023875 void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070023876 uint32_t minImageCount;
23877 uint32_t maxImageCount;
23878 Extent2D currentExtent;
23879 Extent2D minImageExtent;
23880 Extent2D maxImageExtent;
23881 uint32_t maxImageArrayLayers;
23882 SurfaceTransformFlagsKHR supportedTransforms;
23883 SurfaceTransformFlagBitsKHR currentTransform;
23884 CompositeAlphaFlagsKHR supportedCompositeAlpha;
23885 ImageUsageFlags supportedUsageFlags;
23886 SurfaceCounterFlagsEXT supportedSurfaceCounters;
23887 };
23888 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
23889
23890 struct SwapchainCounterCreateInfoEXT
23891 {
23892 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023893 : surfaceCounters( surfaceCounters_ )
Mark Young39389872017-01-19 21:10:49 -070023894 {
23895 }
23896
23897 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
23898 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023899 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023900 }
23901
23902 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
23903 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023904 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023905 return *this;
23906 }
Mark Young39389872017-01-19 21:10:49 -070023907 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
23908 {
23909 pNext = pNext_;
23910 return *this;
23911 }
23912
23913 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
23914 {
23915 surfaceCounters = surfaceCounters_;
23916 return *this;
23917 }
23918
23919 operator const VkSwapchainCounterCreateInfoEXT&() const
23920 {
23921 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
23922 }
23923
23924 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
23925 {
23926 return ( sType == rhs.sType )
23927 && ( pNext == rhs.pNext )
23928 && ( surfaceCounters == rhs.surfaceCounters );
23929 }
23930
23931 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
23932 {
23933 return !operator==( rhs );
23934 }
23935
23936 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023937 StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT;
Mark Young39389872017-01-19 21:10:49 -070023938
23939 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023940 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070023941 SurfaceCounterFlagsEXT surfaceCounters;
23942 };
23943 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
23944
23945 enum class DisplayPowerStateEXT
23946 {
23947 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
23948 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
23949 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
23950 };
23951
23952 struct DisplayPowerInfoEXT
23953 {
23954 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023955 : powerState( powerState_ )
Mark Young39389872017-01-19 21:10:49 -070023956 {
23957 }
23958
23959 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
23960 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023961 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023962 }
23963
23964 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
23965 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023966 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023967 return *this;
23968 }
Mark Young39389872017-01-19 21:10:49 -070023969 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
23970 {
23971 pNext = pNext_;
23972 return *this;
23973 }
23974
23975 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
23976 {
23977 powerState = powerState_;
23978 return *this;
23979 }
23980
23981 operator const VkDisplayPowerInfoEXT&() const
23982 {
23983 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
23984 }
23985
23986 bool operator==( DisplayPowerInfoEXT const& rhs ) const
23987 {
23988 return ( sType == rhs.sType )
23989 && ( pNext == rhs.pNext )
23990 && ( powerState == rhs.powerState );
23991 }
23992
23993 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
23994 {
23995 return !operator==( rhs );
23996 }
23997
23998 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070023999 StructureType sType = StructureType::eDisplayPowerInfoEXT;
Mark Young39389872017-01-19 21:10:49 -070024000
24001 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024002 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070024003 DisplayPowerStateEXT powerState;
24004 };
24005 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
24006
24007 enum class DeviceEventTypeEXT
24008 {
24009 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
24010 };
24011
24012 struct DeviceEventInfoEXT
24013 {
24014 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024015 : deviceEvent( deviceEvent_ )
Mark Young39389872017-01-19 21:10:49 -070024016 {
24017 }
24018
24019 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
24020 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024021 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024022 }
24023
24024 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
24025 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024026 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024027 return *this;
24028 }
Mark Young39389872017-01-19 21:10:49 -070024029 DeviceEventInfoEXT& setPNext( const void* pNext_ )
24030 {
24031 pNext = pNext_;
24032 return *this;
24033 }
24034
24035 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
24036 {
24037 deviceEvent = deviceEvent_;
24038 return *this;
24039 }
24040
24041 operator const VkDeviceEventInfoEXT&() const
24042 {
24043 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
24044 }
24045
24046 bool operator==( DeviceEventInfoEXT const& rhs ) const
24047 {
24048 return ( sType == rhs.sType )
24049 && ( pNext == rhs.pNext )
24050 && ( deviceEvent == rhs.deviceEvent );
24051 }
24052
24053 bool operator!=( DeviceEventInfoEXT const& rhs ) const
24054 {
24055 return !operator==( rhs );
24056 }
24057
24058 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024059 StructureType sType = StructureType::eDeviceEventInfoEXT;
Mark Young39389872017-01-19 21:10:49 -070024060
24061 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024062 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070024063 DeviceEventTypeEXT deviceEvent;
24064 };
24065 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
24066
24067 enum class DisplayEventTypeEXT
24068 {
24069 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
24070 };
24071
24072 struct DisplayEventInfoEXT
24073 {
24074 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024075 : displayEvent( displayEvent_ )
Mark Young39389872017-01-19 21:10:49 -070024076 {
24077 }
24078
24079 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
24080 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024081 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024082 }
24083
24084 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
24085 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024086 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024087 return *this;
24088 }
Mark Young39389872017-01-19 21:10:49 -070024089 DisplayEventInfoEXT& setPNext( const void* pNext_ )
24090 {
24091 pNext = pNext_;
24092 return *this;
24093 }
24094
24095 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
24096 {
24097 displayEvent = displayEvent_;
24098 return *this;
24099 }
24100
24101 operator const VkDisplayEventInfoEXT&() const
24102 {
24103 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
24104 }
24105
24106 bool operator==( DisplayEventInfoEXT const& rhs ) const
24107 {
24108 return ( sType == rhs.sType )
24109 && ( pNext == rhs.pNext )
24110 && ( displayEvent == rhs.displayEvent );
24111 }
24112
24113 bool operator!=( DisplayEventInfoEXT const& rhs ) const
24114 {
24115 return !operator==( rhs );
24116 }
24117
24118 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024119 StructureType sType = StructureType::eDisplayEventInfoEXT;
Mark Young39389872017-01-19 21:10:49 -070024120
24121 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024122 const void* pNext = nullptr;
Mark Young39389872017-01-19 21:10:49 -070024123 DisplayEventTypeEXT displayEvent;
24124 };
24125 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
24126
Mark Young0f183a82017-02-28 09:58:04 -070024127 enum class PeerMemoryFeatureFlagBitsKHX
24128 {
24129 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
24130 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
24131 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
24132 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
24133 };
24134
24135 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
24136
24137 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
24138 {
24139 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
24140 }
24141
24142 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
24143 {
24144 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
24145 }
24146
24147 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
24148 {
24149 enum
24150 {
24151 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
24152 };
24153 };
24154
24155 enum class MemoryAllocateFlagBitsKHX
24156 {
24157 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
24158 };
24159
24160 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
24161
24162 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
24163 {
24164 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
24165 }
24166
24167 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
24168 {
24169 return ~( MemoryAllocateFlagsKHX( bits ) );
24170 }
24171
24172 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
24173 {
24174 enum
24175 {
24176 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
24177 };
24178 };
24179
24180 struct MemoryAllocateFlagsInfoKHX
24181 {
24182 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024183 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070024184 , deviceMask( deviceMask_ )
24185 {
24186 }
24187
24188 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
24189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024190 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024191 }
24192
24193 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
24194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024195 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024196 return *this;
24197 }
Mark Young0f183a82017-02-28 09:58:04 -070024198 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
24199 {
24200 pNext = pNext_;
24201 return *this;
24202 }
24203
24204 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
24205 {
24206 flags = flags_;
24207 return *this;
24208 }
24209
24210 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
24211 {
24212 deviceMask = deviceMask_;
24213 return *this;
24214 }
24215
24216 operator const VkMemoryAllocateFlagsInfoKHX&() const
24217 {
24218 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
24219 }
24220
24221 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
24222 {
24223 return ( sType == rhs.sType )
24224 && ( pNext == rhs.pNext )
24225 && ( flags == rhs.flags )
24226 && ( deviceMask == rhs.deviceMask );
24227 }
24228
24229 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
24230 {
24231 return !operator==( rhs );
24232 }
24233
24234 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024235 StructureType sType = StructureType::eMemoryAllocateFlagsInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070024236
24237 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024238 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024239 MemoryAllocateFlagsKHX flags;
24240 uint32_t deviceMask;
24241 };
24242 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
24243
24244 enum class DeviceGroupPresentModeFlagBitsKHX
24245 {
24246 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
24247 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
24248 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
24249 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
24250 };
24251
24252 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
24253
24254 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
24255 {
24256 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
24257 }
24258
24259 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
24260 {
24261 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
24262 }
24263
24264 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
24265 {
24266 enum
24267 {
24268 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
24269 };
24270 };
24271
24272 struct DeviceGroupPresentCapabilitiesKHX
24273 {
24274 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
24275 {
24276 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
24277 }
24278
24279 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24280 {
24281 return ( sType == rhs.sType )
24282 && ( pNext == rhs.pNext )
24283 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
24284 && ( modes == rhs.modes );
24285 }
24286
24287 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24288 {
24289 return !operator==( rhs );
24290 }
24291
24292 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024293 StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHX;
Mark Young0f183a82017-02-28 09:58:04 -070024294
24295 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024296 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024297 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
24298 DeviceGroupPresentModeFlagsKHX modes;
24299 };
24300 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
24301
24302 struct DeviceGroupPresentInfoKHX
24303 {
24304 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024305 : swapchainCount( swapchainCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070024306 , pDeviceMasks( pDeviceMasks_ )
24307 , mode( mode_ )
24308 {
24309 }
24310
24311 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
24312 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024313 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024314 }
24315
24316 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
24317 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024318 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024319 return *this;
24320 }
Mark Young0f183a82017-02-28 09:58:04 -070024321 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
24322 {
24323 pNext = pNext_;
24324 return *this;
24325 }
24326
24327 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
24328 {
24329 swapchainCount = swapchainCount_;
24330 return *this;
24331 }
24332
24333 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
24334 {
24335 pDeviceMasks = pDeviceMasks_;
24336 return *this;
24337 }
24338
24339 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
24340 {
24341 mode = mode_;
24342 return *this;
24343 }
24344
24345 operator const VkDeviceGroupPresentInfoKHX&() const
24346 {
24347 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
24348 }
24349
24350 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
24351 {
24352 return ( sType == rhs.sType )
24353 && ( pNext == rhs.pNext )
24354 && ( swapchainCount == rhs.swapchainCount )
24355 && ( pDeviceMasks == rhs.pDeviceMasks )
24356 && ( mode == rhs.mode );
24357 }
24358
24359 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
24360 {
24361 return !operator==( rhs );
24362 }
24363
24364 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024365 StructureType sType = StructureType::eDeviceGroupPresentInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070024366
24367 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024368 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024369 uint32_t swapchainCount;
24370 const uint32_t* pDeviceMasks;
24371 DeviceGroupPresentModeFlagBitsKHX mode;
24372 };
24373 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
24374
24375 struct DeviceGroupSwapchainCreateInfoKHX
24376 {
24377 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024378 : modes( modes_ )
Mark Young0f183a82017-02-28 09:58:04 -070024379 {
24380 }
24381
24382 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24383 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024384 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024385 }
24386
24387 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24388 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024389 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024390 return *this;
24391 }
Mark Young0f183a82017-02-28 09:58:04 -070024392 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
24393 {
24394 pNext = pNext_;
24395 return *this;
24396 }
24397
24398 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
24399 {
24400 modes = modes_;
24401 return *this;
24402 }
24403
24404 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
24405 {
24406 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
24407 }
24408
24409 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24410 {
24411 return ( sType == rhs.sType )
24412 && ( pNext == rhs.pNext )
24413 && ( modes == rhs.modes );
24414 }
24415
24416 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24417 {
24418 return !operator==( rhs );
24419 }
24420
24421 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024422 StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHX;
Mark Young0f183a82017-02-28 09:58:04 -070024423
24424 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024425 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024426 DeviceGroupPresentModeFlagsKHX modes;
24427 };
24428 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
24429
24430 enum class SwapchainCreateFlagBitsKHR
24431 {
24432 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
24433 };
24434
24435 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
24436
24437 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
24438 {
24439 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
24440 }
24441
24442 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
24443 {
24444 return ~( SwapchainCreateFlagsKHR( bits ) );
24445 }
24446
24447 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
24448 {
24449 enum
24450 {
24451 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
24452 };
24453 };
24454
24455 struct SwapchainCreateInfoKHR
24456 {
24457 SwapchainCreateInfoKHR( SwapchainCreateFlagsKHR flags_ = SwapchainCreateFlagsKHR(), SurfaceKHR surface_ = SurfaceKHR(), uint32_t minImageCount_ = 0, Format imageFormat_ = Format::eUndefined, ColorSpaceKHR imageColorSpace_ = ColorSpaceKHR::eSrgbNonlinear, Extent2D imageExtent_ = Extent2D(), uint32_t imageArrayLayers_ = 0, ImageUsageFlags imageUsage_ = ImageUsageFlags(), SharingMode imageSharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr, SurfaceTransformFlagBitsKHR preTransform_ = SurfaceTransformFlagBitsKHR::eIdentity, CompositeAlphaFlagBitsKHR compositeAlpha_ = CompositeAlphaFlagBitsKHR::eOpaque, PresentModeKHR presentMode_ = PresentModeKHR::eImmediate, Bool32 clipped_ = 0, SwapchainKHR oldSwapchain_ = SwapchainKHR() )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024458 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070024459 , surface( surface_ )
24460 , minImageCount( minImageCount_ )
24461 , imageFormat( imageFormat_ )
24462 , imageColorSpace( imageColorSpace_ )
24463 , imageExtent( imageExtent_ )
24464 , imageArrayLayers( imageArrayLayers_ )
24465 , imageUsage( imageUsage_ )
24466 , imageSharingMode( imageSharingMode_ )
24467 , queueFamilyIndexCount( queueFamilyIndexCount_ )
24468 , pQueueFamilyIndices( pQueueFamilyIndices_ )
24469 , preTransform( preTransform_ )
24470 , compositeAlpha( compositeAlpha_ )
24471 , presentMode( presentMode_ )
24472 , clipped( clipped_ )
24473 , oldSwapchain( oldSwapchain_ )
24474 {
24475 }
24476
24477 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
24478 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024479 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024480 }
24481
24482 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
24483 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024484 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024485 return *this;
24486 }
Mark Young0f183a82017-02-28 09:58:04 -070024487 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
24488 {
24489 pNext = pNext_;
24490 return *this;
24491 }
24492
24493 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
24494 {
24495 flags = flags_;
24496 return *this;
24497 }
24498
24499 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
24500 {
24501 surface = surface_;
24502 return *this;
24503 }
24504
24505 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
24506 {
24507 minImageCount = minImageCount_;
24508 return *this;
24509 }
24510
24511 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
24512 {
24513 imageFormat = imageFormat_;
24514 return *this;
24515 }
24516
24517 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
24518 {
24519 imageColorSpace = imageColorSpace_;
24520 return *this;
24521 }
24522
24523 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
24524 {
24525 imageExtent = imageExtent_;
24526 return *this;
24527 }
24528
24529 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
24530 {
24531 imageArrayLayers = imageArrayLayers_;
24532 return *this;
24533 }
24534
24535 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
24536 {
24537 imageUsage = imageUsage_;
24538 return *this;
24539 }
24540
24541 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
24542 {
24543 imageSharingMode = imageSharingMode_;
24544 return *this;
24545 }
24546
24547 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
24548 {
24549 queueFamilyIndexCount = queueFamilyIndexCount_;
24550 return *this;
24551 }
24552
24553 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
24554 {
24555 pQueueFamilyIndices = pQueueFamilyIndices_;
24556 return *this;
24557 }
24558
24559 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
24560 {
24561 preTransform = preTransform_;
24562 return *this;
24563 }
24564
24565 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
24566 {
24567 compositeAlpha = compositeAlpha_;
24568 return *this;
24569 }
24570
24571 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
24572 {
24573 presentMode = presentMode_;
24574 return *this;
24575 }
24576
24577 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
24578 {
24579 clipped = clipped_;
24580 return *this;
24581 }
24582
24583 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
24584 {
24585 oldSwapchain = oldSwapchain_;
24586 return *this;
24587 }
24588
24589 operator const VkSwapchainCreateInfoKHR&() const
24590 {
24591 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
24592 }
24593
24594 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
24595 {
24596 return ( sType == rhs.sType )
24597 && ( pNext == rhs.pNext )
24598 && ( flags == rhs.flags )
24599 && ( surface == rhs.surface )
24600 && ( minImageCount == rhs.minImageCount )
24601 && ( imageFormat == rhs.imageFormat )
24602 && ( imageColorSpace == rhs.imageColorSpace )
24603 && ( imageExtent == rhs.imageExtent )
24604 && ( imageArrayLayers == rhs.imageArrayLayers )
24605 && ( imageUsage == rhs.imageUsage )
24606 && ( imageSharingMode == rhs.imageSharingMode )
24607 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
24608 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
24609 && ( preTransform == rhs.preTransform )
24610 && ( compositeAlpha == rhs.compositeAlpha )
24611 && ( presentMode == rhs.presentMode )
24612 && ( clipped == rhs.clipped )
24613 && ( oldSwapchain == rhs.oldSwapchain );
24614 }
24615
24616 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
24617 {
24618 return !operator==( rhs );
24619 }
24620
24621 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024622 StructureType sType = StructureType::eSwapchainCreateInfoKHR;
Mark Young0f183a82017-02-28 09:58:04 -070024623
24624 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024625 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024626 SwapchainCreateFlagsKHR flags;
24627 SurfaceKHR surface;
24628 uint32_t minImageCount;
24629 Format imageFormat;
24630 ColorSpaceKHR imageColorSpace;
24631 Extent2D imageExtent;
24632 uint32_t imageArrayLayers;
24633 ImageUsageFlags imageUsage;
24634 SharingMode imageSharingMode;
24635 uint32_t queueFamilyIndexCount;
24636 const uint32_t* pQueueFamilyIndices;
24637 SurfaceTransformFlagBitsKHR preTransform;
24638 CompositeAlphaFlagBitsKHR compositeAlpha;
24639 PresentModeKHR presentMode;
24640 Bool32 clipped;
24641 SwapchainKHR oldSwapchain;
24642 };
24643 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
24644
24645 enum class ViewportCoordinateSwizzleNV
24646 {
24647 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
24648 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
24649 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
24650 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
24651 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
24652 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
24653 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
24654 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
24655 };
24656
24657 struct ViewportSwizzleNV
24658 {
24659 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
24660 : x( x_ )
24661 , y( y_ )
24662 , z( z_ )
24663 , w( w_ )
24664 {
24665 }
24666
24667 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
24668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024669 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024670 }
24671
24672 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
24673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024674 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024675 return *this;
24676 }
Mark Young0f183a82017-02-28 09:58:04 -070024677 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
24678 {
24679 x = x_;
24680 return *this;
24681 }
24682
24683 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
24684 {
24685 y = y_;
24686 return *this;
24687 }
24688
24689 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
24690 {
24691 z = z_;
24692 return *this;
24693 }
24694
24695 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
24696 {
24697 w = w_;
24698 return *this;
24699 }
24700
24701 operator const VkViewportSwizzleNV&() const
24702 {
24703 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
24704 }
24705
24706 bool operator==( ViewportSwizzleNV const& rhs ) const
24707 {
24708 return ( x == rhs.x )
24709 && ( y == rhs.y )
24710 && ( z == rhs.z )
24711 && ( w == rhs.w );
24712 }
24713
24714 bool operator!=( ViewportSwizzleNV const& rhs ) const
24715 {
24716 return !operator==( rhs );
24717 }
24718
24719 ViewportCoordinateSwizzleNV x;
24720 ViewportCoordinateSwizzleNV y;
24721 ViewportCoordinateSwizzleNV z;
24722 ViewportCoordinateSwizzleNV w;
24723 };
24724 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
24725
24726 struct PipelineViewportSwizzleStateCreateInfoNV
24727 {
24728 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024729 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070024730 , viewportCount( viewportCount_ )
24731 , pViewportSwizzles( pViewportSwizzles_ )
24732 {
24733 }
24734
24735 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24736 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024737 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024738 }
24739
24740 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24741 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024742 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024743 return *this;
24744 }
Mark Young0f183a82017-02-28 09:58:04 -070024745 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
24746 {
24747 pNext = pNext_;
24748 return *this;
24749 }
24750
24751 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
24752 {
24753 flags = flags_;
24754 return *this;
24755 }
24756
24757 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
24758 {
24759 viewportCount = viewportCount_;
24760 return *this;
24761 }
24762
24763 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
24764 {
24765 pViewportSwizzles = pViewportSwizzles_;
24766 return *this;
24767 }
24768
24769 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
24770 {
24771 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
24772 }
24773
24774 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24775 {
24776 return ( sType == rhs.sType )
24777 && ( pNext == rhs.pNext )
24778 && ( flags == rhs.flags )
24779 && ( viewportCount == rhs.viewportCount )
24780 && ( pViewportSwizzles == rhs.pViewportSwizzles );
24781 }
24782
24783 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24784 {
24785 return !operator==( rhs );
24786 }
24787
24788 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024789 StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV;
Mark Young0f183a82017-02-28 09:58:04 -070024790
24791 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024792 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024793 PipelineViewportSwizzleStateCreateFlagsNV flags;
24794 uint32_t viewportCount;
24795 const ViewportSwizzleNV* pViewportSwizzles;
24796 };
24797 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
24798
24799 enum class DiscardRectangleModeEXT
24800 {
24801 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
24802 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
24803 };
24804
24805 struct PipelineDiscardRectangleStateCreateInfoEXT
24806 {
24807 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024808 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070024809 , discardRectangleMode( discardRectangleMode_ )
24810 , discardRectangleCount( discardRectangleCount_ )
24811 , pDiscardRectangles( pDiscardRectangles_ )
24812 {
24813 }
24814
24815 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24816 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024817 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024818 }
24819
24820 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24821 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024822 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024823 return *this;
24824 }
Mark Young0f183a82017-02-28 09:58:04 -070024825 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
24826 {
24827 pNext = pNext_;
24828 return *this;
24829 }
24830
24831 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
24832 {
24833 flags = flags_;
24834 return *this;
24835 }
24836
24837 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
24838 {
24839 discardRectangleMode = discardRectangleMode_;
24840 return *this;
24841 }
24842
24843 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
24844 {
24845 discardRectangleCount = discardRectangleCount_;
24846 return *this;
24847 }
24848
24849 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
24850 {
24851 pDiscardRectangles = pDiscardRectangles_;
24852 return *this;
24853 }
24854
24855 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
24856 {
24857 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
24858 }
24859
24860 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24861 {
24862 return ( sType == rhs.sType )
24863 && ( pNext == rhs.pNext )
24864 && ( flags == rhs.flags )
24865 && ( discardRectangleMode == rhs.discardRectangleMode )
24866 && ( discardRectangleCount == rhs.discardRectangleCount )
24867 && ( pDiscardRectangles == rhs.pDiscardRectangles );
24868 }
24869
24870 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24871 {
24872 return !operator==( rhs );
24873 }
24874
24875 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024876 StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT;
Mark Young0f183a82017-02-28 09:58:04 -070024877
24878 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070024879 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070024880 PipelineDiscardRectangleStateCreateFlagsEXT flags;
24881 DiscardRectangleModeEXT discardRectangleMode;
24882 uint32_t discardRectangleCount;
24883 const Rect2D* pDiscardRectangles;
24884 };
24885 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
24886
24887 enum class SubpassDescriptionFlagBits
24888 {
24889 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
24890 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
24891 };
24892
24893 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
24894
24895 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
24896 {
24897 return SubpassDescriptionFlags( bit0 ) | bit1;
24898 }
24899
24900 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
24901 {
24902 return ~( SubpassDescriptionFlags( bits ) );
24903 }
24904
24905 template <> struct FlagTraits<SubpassDescriptionFlagBits>
24906 {
24907 enum
24908 {
24909 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
24910 };
24911 };
24912
24913 struct SubpassDescription
24914 {
24915 SubpassDescription( SubpassDescriptionFlags flags_ = SubpassDescriptionFlags(), PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, uint32_t inputAttachmentCount_ = 0, const AttachmentReference* pInputAttachments_ = nullptr, uint32_t colorAttachmentCount_ = 0, const AttachmentReference* pColorAttachments_ = nullptr, const AttachmentReference* pResolveAttachments_ = nullptr, const AttachmentReference* pDepthStencilAttachment_ = nullptr, uint32_t preserveAttachmentCount_ = 0, const uint32_t* pPreserveAttachments_ = nullptr )
24916 : flags( flags_ )
24917 , pipelineBindPoint( pipelineBindPoint_ )
24918 , inputAttachmentCount( inputAttachmentCount_ )
24919 , pInputAttachments( pInputAttachments_ )
24920 , colorAttachmentCount( colorAttachmentCount_ )
24921 , pColorAttachments( pColorAttachments_ )
24922 , pResolveAttachments( pResolveAttachments_ )
24923 , pDepthStencilAttachment( pDepthStencilAttachment_ )
24924 , preserveAttachmentCount( preserveAttachmentCount_ )
24925 , pPreserveAttachments( pPreserveAttachments_ )
24926 {
24927 }
24928
24929 SubpassDescription( VkSubpassDescription const & rhs )
24930 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024931 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024932 }
24933
24934 SubpassDescription& operator=( VkSubpassDescription const & rhs )
24935 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024936 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024937 return *this;
24938 }
Mark Young0f183a82017-02-28 09:58:04 -070024939 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
24940 {
24941 flags = flags_;
24942 return *this;
24943 }
24944
24945 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
24946 {
24947 pipelineBindPoint = pipelineBindPoint_;
24948 return *this;
24949 }
24950
24951 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
24952 {
24953 inputAttachmentCount = inputAttachmentCount_;
24954 return *this;
24955 }
24956
24957 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
24958 {
24959 pInputAttachments = pInputAttachments_;
24960 return *this;
24961 }
24962
24963 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
24964 {
24965 colorAttachmentCount = colorAttachmentCount_;
24966 return *this;
24967 }
24968
24969 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
24970 {
24971 pColorAttachments = pColorAttachments_;
24972 return *this;
24973 }
24974
24975 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
24976 {
24977 pResolveAttachments = pResolveAttachments_;
24978 return *this;
24979 }
24980
24981 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
24982 {
24983 pDepthStencilAttachment = pDepthStencilAttachment_;
24984 return *this;
24985 }
24986
24987 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
24988 {
24989 preserveAttachmentCount = preserveAttachmentCount_;
24990 return *this;
24991 }
24992
24993 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
24994 {
24995 pPreserveAttachments = pPreserveAttachments_;
24996 return *this;
24997 }
24998
24999 operator const VkSubpassDescription&() const
25000 {
25001 return *reinterpret_cast<const VkSubpassDescription*>(this);
25002 }
25003
25004 bool operator==( SubpassDescription const& rhs ) const
25005 {
25006 return ( flags == rhs.flags )
25007 && ( pipelineBindPoint == rhs.pipelineBindPoint )
25008 && ( inputAttachmentCount == rhs.inputAttachmentCount )
25009 && ( pInputAttachments == rhs.pInputAttachments )
25010 && ( colorAttachmentCount == rhs.colorAttachmentCount )
25011 && ( pColorAttachments == rhs.pColorAttachments )
25012 && ( pResolveAttachments == rhs.pResolveAttachments )
25013 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
25014 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
25015 && ( pPreserveAttachments == rhs.pPreserveAttachments );
25016 }
25017
25018 bool operator!=( SubpassDescription const& rhs ) const
25019 {
25020 return !operator==( rhs );
25021 }
25022
25023 SubpassDescriptionFlags flags;
25024 PipelineBindPoint pipelineBindPoint;
25025 uint32_t inputAttachmentCount;
25026 const AttachmentReference* pInputAttachments;
25027 uint32_t colorAttachmentCount;
25028 const AttachmentReference* pColorAttachments;
25029 const AttachmentReference* pResolveAttachments;
25030 const AttachmentReference* pDepthStencilAttachment;
25031 uint32_t preserveAttachmentCount;
25032 const uint32_t* pPreserveAttachments;
25033 };
25034 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
25035
25036 struct RenderPassCreateInfo
25037 {
25038 RenderPassCreateInfo( RenderPassCreateFlags flags_ = RenderPassCreateFlags(), uint32_t attachmentCount_ = 0, const AttachmentDescription* pAttachments_ = nullptr, uint32_t subpassCount_ = 0, const SubpassDescription* pSubpasses_ = nullptr, uint32_t dependencyCount_ = 0, const SubpassDependency* pDependencies_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025039 : flags( flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070025040 , attachmentCount( attachmentCount_ )
25041 , pAttachments( pAttachments_ )
25042 , subpassCount( subpassCount_ )
25043 , pSubpasses( pSubpasses_ )
25044 , dependencyCount( dependencyCount_ )
25045 , pDependencies( pDependencies_ )
25046 {
25047 }
25048
25049 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
25050 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025051 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070025052 }
25053
25054 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
25055 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025056 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070025057 return *this;
25058 }
Mark Young0f183a82017-02-28 09:58:04 -070025059 RenderPassCreateInfo& setPNext( const void* pNext_ )
25060 {
25061 pNext = pNext_;
25062 return *this;
25063 }
25064
25065 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
25066 {
25067 flags = flags_;
25068 return *this;
25069 }
25070
25071 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
25072 {
25073 attachmentCount = attachmentCount_;
25074 return *this;
25075 }
25076
25077 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
25078 {
25079 pAttachments = pAttachments_;
25080 return *this;
25081 }
25082
25083 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
25084 {
25085 subpassCount = subpassCount_;
25086 return *this;
25087 }
25088
25089 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
25090 {
25091 pSubpasses = pSubpasses_;
25092 return *this;
25093 }
25094
25095 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
25096 {
25097 dependencyCount = dependencyCount_;
25098 return *this;
25099 }
25100
25101 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
25102 {
25103 pDependencies = pDependencies_;
25104 return *this;
25105 }
25106
25107 operator const VkRenderPassCreateInfo&() const
25108 {
25109 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
25110 }
25111
25112 bool operator==( RenderPassCreateInfo const& rhs ) const
25113 {
25114 return ( sType == rhs.sType )
25115 && ( pNext == rhs.pNext )
25116 && ( flags == rhs.flags )
25117 && ( attachmentCount == rhs.attachmentCount )
25118 && ( pAttachments == rhs.pAttachments )
25119 && ( subpassCount == rhs.subpassCount )
25120 && ( pSubpasses == rhs.pSubpasses )
25121 && ( dependencyCount == rhs.dependencyCount )
25122 && ( pDependencies == rhs.pDependencies );
25123 }
25124
25125 bool operator!=( RenderPassCreateInfo const& rhs ) const
25126 {
25127 return !operator==( rhs );
25128 }
25129
25130 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025131 StructureType sType = StructureType::eRenderPassCreateInfo;
Mark Young0f183a82017-02-28 09:58:04 -070025132
25133 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025134 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070025135 RenderPassCreateFlags flags;
25136 uint32_t attachmentCount;
25137 const AttachmentDescription* pAttachments;
25138 uint32_t subpassCount;
25139 const SubpassDescription* pSubpasses;
25140 uint32_t dependencyCount;
25141 const SubpassDependency* pDependencies;
25142 };
25143 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
25144
Lenny Komowb79f04a2017-09-18 17:07:00 -060025145 enum class PointClippingBehaviorKHR
25146 {
25147 eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
25148 eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
25149 };
25150
25151 struct PhysicalDevicePointClippingPropertiesKHR
25152 {
25153 operator const VkPhysicalDevicePointClippingPropertiesKHR&() const
25154 {
25155 return *reinterpret_cast<const VkPhysicalDevicePointClippingPropertiesKHR*>(this);
25156 }
25157
25158 bool operator==( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25159 {
25160 return ( sType == rhs.sType )
25161 && ( pNext == rhs.pNext )
25162 && ( pointClippingBehavior == rhs.pointClippingBehavior );
25163 }
25164
25165 bool operator!=( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25166 {
25167 return !operator==( rhs );
25168 }
25169
25170 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025171 StructureType sType = StructureType::ePhysicalDevicePointClippingPropertiesKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060025172
25173 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025174 void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060025175 PointClippingBehaviorKHR pointClippingBehavior;
25176 };
25177 static_assert( sizeof( PhysicalDevicePointClippingPropertiesKHR ) == sizeof( VkPhysicalDevicePointClippingPropertiesKHR ), "struct and wrapper have different size!" );
25178
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025179 enum class SamplerReductionModeEXT
25180 {
25181 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
25182 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
25183 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
25184 };
25185
25186 struct SamplerReductionModeCreateInfoEXT
25187 {
25188 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025189 : reductionMode( reductionMode_ )
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025190 {
25191 }
25192
25193 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
25194 {
25195 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25196 }
25197
25198 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
25199 {
25200 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25201 return *this;
25202 }
25203 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
25204 {
25205 pNext = pNext_;
25206 return *this;
25207 }
25208
25209 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
25210 {
25211 reductionMode = reductionMode_;
25212 return *this;
25213 }
25214
25215 operator const VkSamplerReductionModeCreateInfoEXT&() const
25216 {
25217 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
25218 }
25219
25220 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
25221 {
25222 return ( sType == rhs.sType )
25223 && ( pNext == rhs.pNext )
25224 && ( reductionMode == rhs.reductionMode );
25225 }
25226
25227 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
25228 {
25229 return !operator==( rhs );
25230 }
25231
25232 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025233 StructureType sType = StructureType::eSamplerReductionModeCreateInfoEXT;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025234
25235 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025236 const void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025237 SamplerReductionModeEXT reductionMode;
25238 };
25239 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
25240
Lenny Komowb79f04a2017-09-18 17:07:00 -060025241 enum class TessellationDomainOriginKHR
25242 {
25243 eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
25244 eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
25245 };
25246
25247 struct PipelineTessellationDomainOriginStateCreateInfoKHR
25248 {
25249 PipelineTessellationDomainOriginStateCreateInfoKHR( TessellationDomainOriginKHR domainOrigin_ = TessellationDomainOriginKHR::eUpperLeft )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025250 : domainOrigin( domainOrigin_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060025251 {
25252 }
25253
25254 PipelineTessellationDomainOriginStateCreateInfoKHR( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25255 {
25256 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25257 }
25258
25259 PipelineTessellationDomainOriginStateCreateInfoKHR& operator=( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25260 {
25261 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25262 return *this;
25263 }
25264 PipelineTessellationDomainOriginStateCreateInfoKHR& setPNext( const void* pNext_ )
25265 {
25266 pNext = pNext_;
25267 return *this;
25268 }
25269
25270 PipelineTessellationDomainOriginStateCreateInfoKHR& setDomainOrigin( TessellationDomainOriginKHR domainOrigin_ )
25271 {
25272 domainOrigin = domainOrigin_;
25273 return *this;
25274 }
25275
25276 operator const VkPipelineTessellationDomainOriginStateCreateInfoKHR&() const
25277 {
25278 return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfoKHR*>(this);
25279 }
25280
25281 bool operator==( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25282 {
25283 return ( sType == rhs.sType )
25284 && ( pNext == rhs.pNext )
25285 && ( domainOrigin == rhs.domainOrigin );
25286 }
25287
25288 bool operator!=( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25289 {
25290 return !operator==( rhs );
25291 }
25292
25293 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025294 StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060025295
25296 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025297 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060025298 TessellationDomainOriginKHR domainOrigin;
25299 };
25300 static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfoKHR ), "struct and wrapper have different size!" );
25301
25302 enum class SamplerYcbcrModelConversionKHR
25303 {
25304 eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
25305 eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
25306 eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
25307 eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
25308 eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR
25309 };
25310
25311 enum class SamplerYcbcrRangeKHR
25312 {
25313 eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
25314 eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
25315 };
25316
25317 enum class ChromaLocationKHR
25318 {
25319 eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
25320 eMidpoint = VK_CHROMA_LOCATION_MIDPOINT_KHR
25321 };
25322
25323 struct SamplerYcbcrConversionCreateInfoKHR
25324 {
25325 SamplerYcbcrConversionCreateInfoKHR( Format format_ = Format::eUndefined, SamplerYcbcrModelConversionKHR ycbcrModel_ = SamplerYcbcrModelConversionKHR::eRgbIdentity, SamplerYcbcrRangeKHR ycbcrRange_ = SamplerYcbcrRangeKHR::eItuFull, ComponentMapping components_ = ComponentMapping(), ChromaLocationKHR xChromaOffset_ = ChromaLocationKHR::eCositedEven, ChromaLocationKHR yChromaOffset_ = ChromaLocationKHR::eCositedEven, Filter chromaFilter_ = Filter::eNearest, Bool32 forceExplicitReconstruction_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025326 : format( format_ )
Lenny Komowb79f04a2017-09-18 17:07:00 -060025327 , ycbcrModel( ycbcrModel_ )
25328 , ycbcrRange( ycbcrRange_ )
25329 , components( components_ )
25330 , xChromaOffset( xChromaOffset_ )
25331 , yChromaOffset( yChromaOffset_ )
25332 , chromaFilter( chromaFilter_ )
25333 , forceExplicitReconstruction( forceExplicitReconstruction_ )
25334 {
25335 }
25336
25337 SamplerYcbcrConversionCreateInfoKHR( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25338 {
25339 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25340 }
25341
25342 SamplerYcbcrConversionCreateInfoKHR& operator=( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25343 {
25344 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25345 return *this;
25346 }
25347 SamplerYcbcrConversionCreateInfoKHR& setPNext( const void* pNext_ )
25348 {
25349 pNext = pNext_;
25350 return *this;
25351 }
25352
25353 SamplerYcbcrConversionCreateInfoKHR& setFormat( Format format_ )
25354 {
25355 format = format_;
25356 return *this;
25357 }
25358
25359 SamplerYcbcrConversionCreateInfoKHR& setYcbcrModel( SamplerYcbcrModelConversionKHR ycbcrModel_ )
25360 {
25361 ycbcrModel = ycbcrModel_;
25362 return *this;
25363 }
25364
25365 SamplerYcbcrConversionCreateInfoKHR& setYcbcrRange( SamplerYcbcrRangeKHR ycbcrRange_ )
25366 {
25367 ycbcrRange = ycbcrRange_;
25368 return *this;
25369 }
25370
25371 SamplerYcbcrConversionCreateInfoKHR& setComponents( ComponentMapping components_ )
25372 {
25373 components = components_;
25374 return *this;
25375 }
25376
25377 SamplerYcbcrConversionCreateInfoKHR& setXChromaOffset( ChromaLocationKHR xChromaOffset_ )
25378 {
25379 xChromaOffset = xChromaOffset_;
25380 return *this;
25381 }
25382
25383 SamplerYcbcrConversionCreateInfoKHR& setYChromaOffset( ChromaLocationKHR yChromaOffset_ )
25384 {
25385 yChromaOffset = yChromaOffset_;
25386 return *this;
25387 }
25388
25389 SamplerYcbcrConversionCreateInfoKHR& setChromaFilter( Filter chromaFilter_ )
25390 {
25391 chromaFilter = chromaFilter_;
25392 return *this;
25393 }
25394
25395 SamplerYcbcrConversionCreateInfoKHR& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
25396 {
25397 forceExplicitReconstruction = forceExplicitReconstruction_;
25398 return *this;
25399 }
25400
25401 operator const VkSamplerYcbcrConversionCreateInfoKHR&() const
25402 {
25403 return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>(this);
25404 }
25405
25406 bool operator==( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25407 {
25408 return ( sType == rhs.sType )
25409 && ( pNext == rhs.pNext )
25410 && ( format == rhs.format )
25411 && ( ycbcrModel == rhs.ycbcrModel )
25412 && ( ycbcrRange == rhs.ycbcrRange )
25413 && ( components == rhs.components )
25414 && ( xChromaOffset == rhs.xChromaOffset )
25415 && ( yChromaOffset == rhs.yChromaOffset )
25416 && ( chromaFilter == rhs.chromaFilter )
25417 && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
25418 }
25419
25420 bool operator!=( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25421 {
25422 return !operator==( rhs );
25423 }
25424
25425 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025426 StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfoKHR;
Lenny Komowb79f04a2017-09-18 17:07:00 -060025427
25428 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025429 const void* pNext = nullptr;
Lenny Komowb79f04a2017-09-18 17:07:00 -060025430 Format format;
25431 SamplerYcbcrModelConversionKHR ycbcrModel;
25432 SamplerYcbcrRangeKHR ycbcrRange;
25433 ComponentMapping components;
25434 ChromaLocationKHR xChromaOffset;
25435 ChromaLocationKHR yChromaOffset;
25436 Filter chromaFilter;
25437 Bool32 forceExplicitReconstruction;
25438 };
25439 static_assert( sizeof( SamplerYcbcrConversionCreateInfoKHR ) == sizeof( VkSamplerYcbcrConversionCreateInfoKHR ), "struct and wrapper have different size!" );
25440
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025441 enum class BlendOverlapEXT
25442 {
25443 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
25444 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
25445 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
25446 };
25447
25448 struct PipelineColorBlendAdvancedStateCreateInfoEXT
25449 {
25450 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025451 : srcPremultiplied( srcPremultiplied_ )
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025452 , dstPremultiplied( dstPremultiplied_ )
25453 , blendOverlap( blendOverlap_ )
25454 {
25455 }
25456
25457 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25458 {
25459 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25460 }
25461
25462 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25463 {
25464 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25465 return *this;
25466 }
25467 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
25468 {
25469 pNext = pNext_;
25470 return *this;
25471 }
25472
25473 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
25474 {
25475 srcPremultiplied = srcPremultiplied_;
25476 return *this;
25477 }
25478
25479 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
25480 {
25481 dstPremultiplied = dstPremultiplied_;
25482 return *this;
25483 }
25484
25485 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
25486 {
25487 blendOverlap = blendOverlap_;
25488 return *this;
25489 }
25490
25491 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
25492 {
25493 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
25494 }
25495
25496 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25497 {
25498 return ( sType == rhs.sType )
25499 && ( pNext == rhs.pNext )
25500 && ( srcPremultiplied == rhs.srcPremultiplied )
25501 && ( dstPremultiplied == rhs.dstPremultiplied )
25502 && ( blendOverlap == rhs.blendOverlap );
25503 }
25504
25505 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25506 {
25507 return !operator==( rhs );
25508 }
25509
25510 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025511 StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025512
25513 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025514 const void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025515 Bool32 srcPremultiplied;
25516 Bool32 dstPremultiplied;
25517 BlendOverlapEXT blendOverlap;
25518 };
25519 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
25520
25521 enum class CoverageModulationModeNV
25522 {
25523 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
25524 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
25525 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
25526 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
25527 };
25528
25529 struct PipelineCoverageModulationStateCreateInfoNV
25530 {
25531 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025532 : flags( flags_ )
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025533 , coverageModulationMode( coverageModulationMode_ )
25534 , coverageModulationTableEnable( coverageModulationTableEnable_ )
25535 , coverageModulationTableCount( coverageModulationTableCount_ )
25536 , pCoverageModulationTable( pCoverageModulationTable_ )
25537 {
25538 }
25539
25540 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25541 {
25542 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25543 }
25544
25545 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25546 {
25547 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25548 return *this;
25549 }
25550 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
25551 {
25552 pNext = pNext_;
25553 return *this;
25554 }
25555
25556 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
25557 {
25558 flags = flags_;
25559 return *this;
25560 }
25561
25562 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
25563 {
25564 coverageModulationMode = coverageModulationMode_;
25565 return *this;
25566 }
25567
25568 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
25569 {
25570 coverageModulationTableEnable = coverageModulationTableEnable_;
25571 return *this;
25572 }
25573
25574 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
25575 {
25576 coverageModulationTableCount = coverageModulationTableCount_;
25577 return *this;
25578 }
25579
25580 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
25581 {
25582 pCoverageModulationTable = pCoverageModulationTable_;
25583 return *this;
25584 }
25585
25586 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
25587 {
25588 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
25589 }
25590
25591 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25592 {
25593 return ( sType == rhs.sType )
25594 && ( pNext == rhs.pNext )
25595 && ( flags == rhs.flags )
25596 && ( coverageModulationMode == rhs.coverageModulationMode )
25597 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
25598 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
25599 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
25600 }
25601
25602 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25603 {
25604 return !operator==( rhs );
25605 }
25606
25607 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025608 StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025609
25610 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025611 const void* pNext = nullptr;
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025612 PipelineCoverageModulationStateCreateFlagsNV flags;
25613 CoverageModulationModeNV coverageModulationMode;
25614 Bool32 coverageModulationTableEnable;
25615 uint32_t coverageModulationTableCount;
25616 const float* pCoverageModulationTable;
25617 };
25618 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
25619
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025620 enum class ValidationCacheHeaderVersionEXT
25621 {
25622 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
25623 };
25624
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025625 enum class ShaderInfoTypeAMD
25626 {
25627 eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
25628 eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD,
25629 eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
25630 };
25631
25632 enum class QueueGlobalPriorityEXT
25633 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -070025634 eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
25635 eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,
25636 eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT,
25637 eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025638 };
25639
25640 struct DeviceQueueGlobalPriorityCreateInfoEXT
25641 {
25642 DeviceQueueGlobalPriorityCreateInfoEXT( QueueGlobalPriorityEXT globalPriority_ = QueueGlobalPriorityEXT::eLow )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025643 : globalPriority( globalPriority_ )
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025644 {
25645 }
25646
25647 DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
25648 {
25649 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
25650 }
25651
25652 DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
25653 {
25654 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
25655 return *this;
25656 }
25657 DeviceQueueGlobalPriorityCreateInfoEXT& setPNext( const void* pNext_ )
25658 {
25659 pNext = pNext_;
25660 return *this;
25661 }
25662
25663 DeviceQueueGlobalPriorityCreateInfoEXT& setGlobalPriority( QueueGlobalPriorityEXT globalPriority_ )
25664 {
25665 globalPriority = globalPriority_;
25666 return *this;
25667 }
25668
25669 operator const VkDeviceQueueGlobalPriorityCreateInfoEXT&() const
25670 {
25671 return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this);
25672 }
25673
25674 bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
25675 {
25676 return ( sType == rhs.sType )
25677 && ( pNext == rhs.pNext )
25678 && ( globalPriority == rhs.globalPriority );
25679 }
25680
25681 bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
25682 {
25683 return !operator==( rhs );
25684 }
25685
25686 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025687 StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT;
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025688
25689 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025690 const void* pNext = nullptr;
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025691 QueueGlobalPriorityEXT globalPriority;
25692 };
25693 static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" );
25694
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025695 enum class ConservativeRasterizationModeEXT
25696 {
25697 eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
25698 eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT,
25699 eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT
25700 };
25701
25702 struct PipelineRasterizationConservativeStateCreateInfoEXT
25703 {
25704 PipelineRasterizationConservativeStateCreateInfoEXT( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = PipelineRasterizationConservativeStateCreateFlagsEXT(), ConservativeRasterizationModeEXT conservativeRasterizationMode_ = ConservativeRasterizationModeEXT::eDisabled, float extraPrimitiveOverestimationSize_ = 0 )
25705 : flags( flags_ )
25706 , conservativeRasterizationMode( conservativeRasterizationMode_ )
25707 , extraPrimitiveOverestimationSize( extraPrimitiveOverestimationSize_ )
25708 {
25709 }
25710
25711 PipelineRasterizationConservativeStateCreateInfoEXT( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
25712 {
25713 memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
25714 }
25715
25716 PipelineRasterizationConservativeStateCreateInfoEXT& operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs )
25717 {
25718 memcpy( this, &rhs, sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) );
25719 return *this;
25720 }
25721 PipelineRasterizationConservativeStateCreateInfoEXT& setPNext( const void* pNext_ )
25722 {
25723 pNext = pNext_;
25724 return *this;
25725 }
25726
25727 PipelineRasterizationConservativeStateCreateInfoEXT& setFlags( PipelineRasterizationConservativeStateCreateFlagsEXT flags_ )
25728 {
25729 flags = flags_;
25730 return *this;
25731 }
25732
25733 PipelineRasterizationConservativeStateCreateInfoEXT& setConservativeRasterizationMode( ConservativeRasterizationModeEXT conservativeRasterizationMode_ )
25734 {
25735 conservativeRasterizationMode = conservativeRasterizationMode_;
25736 return *this;
25737 }
25738
25739 PipelineRasterizationConservativeStateCreateInfoEXT& setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ )
25740 {
25741 extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_;
25742 return *this;
25743 }
25744
25745 operator const VkPipelineRasterizationConservativeStateCreateInfoEXT&() const
25746 {
25747 return *reinterpret_cast<const VkPipelineRasterizationConservativeStateCreateInfoEXT*>(this);
25748 }
25749
25750 bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const
25751 {
25752 return ( sType == rhs.sType )
25753 && ( pNext == rhs.pNext )
25754 && ( flags == rhs.flags )
25755 && ( conservativeRasterizationMode == rhs.conservativeRasterizationMode )
25756 && ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize );
25757 }
25758
25759 bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const
25760 {
25761 return !operator==( rhs );
25762 }
25763
25764 private:
25765 StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT;
25766
25767 public:
25768 const void* pNext = nullptr;
25769 PipelineRasterizationConservativeStateCreateFlagsEXT flags;
25770 ConservativeRasterizationModeEXT conservativeRasterizationMode;
25771 float extraPrimitiveOverestimationSize;
25772 };
25773 static_assert( sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), "struct and wrapper have different size!" );
25774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025775 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025777 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025778 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25780
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025781 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
25782 {
25783 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25784 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025786 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025787 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025788 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025789 std::vector<LayerProperties,Allocator> properties;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025790 uint32_t propertyCount;
25791 Result result;
25792 do
25793 {
25794 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
25795 if ( ( result == Result::eSuccess ) && propertyCount )
25796 {
25797 properties.resize( propertyCount );
25798 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25799 }
25800 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025801 assert( propertyCount <= properties.size() );
25802 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025803 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceLayerProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025804 }
25805#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25806
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025807
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025808 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025810 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025811 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25813
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025814 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
25815 {
25816 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25817 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025818#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025819 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025820 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025821 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025822 std::vector<ExtensionProperties,Allocator> properties;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025823 uint32_t propertyCount;
25824 Result result;
25825 do
25826 {
25827 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
25828 if ( ( result == Result::eSuccess ) && propertyCount )
25829 {
25830 properties.resize( propertyCount );
25831 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
25832 }
25833 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025834 assert( propertyCount <= properties.size() );
25835 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025836 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceExtensionProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025837 }
25838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25839
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025840
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025841 // forward declarations
25842 struct CmdProcessCommandsInfoNVX;
25843
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025844 class CommandBuffer
25845 {
25846 public:
25847 CommandBuffer()
25848 : m_commandBuffer(VK_NULL_HANDLE)
25849 {}
25850
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025851 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025852 : m_commandBuffer(VK_NULL_HANDLE)
25853 {}
25854
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025855 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070025856 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025857 {}
25858
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025859#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025860 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025861 {
25862 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025863 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025864 }
25865#endif
25866
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025867 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025868 {
25869 m_commandBuffer = VK_NULL_HANDLE;
25870 return *this;
25871 }
25872
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025873 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025874 {
25875 return m_commandBuffer == rhs.m_commandBuffer;
25876 }
25877
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025878 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025879 {
25880 return m_commandBuffer != rhs.m_commandBuffer;
25881 }
25882
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025883 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025884 {
25885 return m_commandBuffer < rhs.m_commandBuffer;
25886 }
25887
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025888 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025890 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25892
25893#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025894 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025895#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025896 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025897#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25898
25899#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025900 Result reset( CommandBufferResetFlags flags ) const;
25901#else
25902 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025903#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25904
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025905 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025906
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025907 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025908#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025909 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025910#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25911
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025912 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025914 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25916
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025917 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025918
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025919 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
25920
25921 void setBlendConstants( const float blendConstants[4] ) const;
25922
25923 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
25924
25925 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
25926
25927 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
25928
25929 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
25930
25931 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025932#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025933 void bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025934#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25935
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025936 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025937
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025938 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025940 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25942
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025943 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025944
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025945 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
25946
25947 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25948
25949 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25950
Mark Young0f183a82017-02-28 09:58:04 -070025951 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025952
25953 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
25954
25955 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025957 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25959
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025960 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025961#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025962 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25964
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025965 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025966#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025967 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25969
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025970 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025972 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025973#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25974
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025975 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025977 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025978#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25979
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025980 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25982 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025983 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25985
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025986 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025987
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025988 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025989#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025990 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025991#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25992
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025993 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025994#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025995 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025998 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026000 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26002
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026003 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026005 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26007
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026008 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026009
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026010 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
26011
26012 void waitEvents( uint32_t eventCount, const Event* pEvents, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026014 void waitEvents( ArrayProxy<const Event> events, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26016
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026017 void pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026019 void pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26021
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026022 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026023
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026024 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026025
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026026 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026027
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026028 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026029
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026030 void copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026031
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026032 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026033#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26034 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026035 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26037
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026038 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026040 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026041#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26042
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026043 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026044
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026045 void endRenderPass() const;
26046
26047 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026049 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026050#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26051
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026052 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026054 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26056
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026057 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026058
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026059 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026061 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026064 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026066 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
26067
26068 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026070 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26072
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026073 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026074#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026075 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26077
Mark Young0f183a82017-02-28 09:58:04 -070026078 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
26079#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26080 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
26081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26082
26083 void setDeviceMaskKHX( uint32_t deviceMask ) const;
26084
26085 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
26086
26087 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
26088
26089 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
26090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26091 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
26092#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26093
26094 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
26095#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26096 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
26097#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26098
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026099 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const;
26100#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26101 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const;
26102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26103
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026104
26105
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026106 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026107 {
26108 return m_commandBuffer;
26109 }
26110
26111 explicit operator bool() const
26112 {
26113 return m_commandBuffer != VK_NULL_HANDLE;
26114 }
26115
26116 bool operator!() const
26117 {
26118 return m_commandBuffer == VK_NULL_HANDLE;
26119 }
26120
26121 private:
26122 VkCommandBuffer m_commandBuffer;
26123 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026124
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026125 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
26126
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026127 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
26128 {
26129 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
26130 }
26131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26132 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
26133 {
26134 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026135 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::begin" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026136 }
26137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26138
26139#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26140 VULKAN_HPP_INLINE Result CommandBuffer::end() const
26141 {
26142 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
26143 }
26144#else
26145 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
26146 {
26147 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026148 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::end" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026149 }
26150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26151
26152#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26153 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
26154 {
26155 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
26156 }
26157#else
26158 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
26159 {
26160 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026161 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::reset" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026162 }
26163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26164
26165 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
26166 {
26167 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
26168 }
26169
26170 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
26171 {
26172 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
26173 }
26174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26175 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
26176 {
26177 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
26178 }
26179#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26180
26181 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
26182 {
26183 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
26184 }
26185#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26186 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
26187 {
26188 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
26189 }
26190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26191
26192 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
26193 {
26194 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
26195 }
26196
26197 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
26198 {
26199 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
26200 }
26201
26202 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
26203 {
26204 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
26205 }
26206
26207 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
26208 {
26209 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
26210 }
26211
26212 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
26213 {
26214 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
26215 }
26216
26217 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
26218 {
26219 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
26220 }
26221
26222 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
26223 {
26224 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
26225 }
26226
26227 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const
26228 {
26229 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
26230 }
26231#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26232 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
26233 {
26234 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
26235 }
26236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26237
26238 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
26239 {
26240 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
26241 }
26242
26243 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
26244 {
26245 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
26246 }
26247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26248 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
26249 {
26250#ifdef VULKAN_HPP_NO_EXCEPTIONS
26251 assert( buffers.size() == offsets.size() );
26252#else
26253 if ( buffers.size() != offsets.size() )
26254 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026255 throw LogicError( "VULKAN_HPP_NAMESPACE::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026256 }
26257#endif // VULKAN_HPP_NO_EXCEPTIONS
26258 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
26259 }
26260#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26261
26262 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
26263 {
26264 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
26265 }
26266
26267 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
26268 {
26269 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
26270 }
26271
26272 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26273 {
26274 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26275 }
26276
26277 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26278 {
26279 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26280 }
26281
Mark Young0f183a82017-02-28 09:58:04 -070026282 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026283 {
Mark Young0f183a82017-02-28 09:58:04 -070026284 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026285 }
26286
26287 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
26288 {
26289 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
26290 }
26291
26292 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
26293 {
26294 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
26295 }
26296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26297 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
26298 {
26299 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
26300 }
26301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26302
26303 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
26304 {
26305 vkCmdCopyImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkImageCopy*>( pRegions ) );
26306 }
26307#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26308 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
26309 {
26310 vkCmdCopyImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkImageCopy*>( regions.data() ) );
26311 }
26312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26313
26314 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
26315 {
26316 vkCmdBlitImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkImageBlit*>( pRegions ), static_cast<VkFilter>( filter ) );
26317 }
26318#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26319 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
26320 {
26321 vkCmdBlitImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkImageBlit*>( regions.data() ), static_cast<VkFilter>( filter ) );
26322 }
26323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26324
26325 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26326 {
26327 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26328 }
26329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26330 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
26331 {
26332 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26333 }
26334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26335
26336 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26337 {
26338 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26339 }
26340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26341 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
26342 {
26343 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26344 }
26345#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26346
26347 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
26348 {
26349 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
26350 }
26351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26352 template <typename T>
26353 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
26354 {
26355 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
26356 }
26357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26358
26359 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
26360 {
26361 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
26362 }
26363
26364 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26365 {
26366 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26367 }
26368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26369 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
26370 {
26371 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26372 }
26373#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26374
26375 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26376 {
26377 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26378 }
26379#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26380 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
26381 {
26382 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26383 }
26384#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26385
26386 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
26387 {
26388 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
26389 }
26390#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26391 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
26392 {
26393 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
26394 }
26395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26396
26397 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
26398 {
26399 vkCmdResolveImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkImageResolve*>( pRegions ) );
26400 }
26401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26402 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
26403 {
26404 vkCmdResolveImage( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkImageResolve*>( regions.data() ) );
26405 }
26406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26407
26408 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
26409 {
26410 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26411 }
26412
26413 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
26414 {
26415 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26416 }
26417
26418 VULKAN_HPP_INLINE void CommandBuffer::waitEvents( uint32_t eventCount, const Event* pEvents, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const
26419 {
26420 vkCmdWaitEvents( m_commandBuffer, eventCount, reinterpret_cast<const VkEvent*>( pEvents ), static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), memoryBarrierCount, reinterpret_cast<const VkMemoryBarrier*>( pMemoryBarriers ), bufferMemoryBarrierCount, reinterpret_cast<const VkBufferMemoryBarrier*>( pBufferMemoryBarriers ), imageMemoryBarrierCount, reinterpret_cast<const VkImageMemoryBarrier*>( pImageMemoryBarriers ) );
26421 }
26422#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26423 VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy<const Event> events, PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const
26424 {
26425 vkCmdWaitEvents( m_commandBuffer, events.size() , reinterpret_cast<const VkEvent*>( events.data() ), static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), memoryBarriers.size() , reinterpret_cast<const VkMemoryBarrier*>( memoryBarriers.data() ), bufferMemoryBarriers.size() , reinterpret_cast<const VkBufferMemoryBarrier*>( bufferMemoryBarriers.data() ), imageMemoryBarriers.size() , reinterpret_cast<const VkImageMemoryBarrier*>( imageMemoryBarriers.data() ) );
26426 }
26427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26428
26429 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const ImageMemoryBarrier* pImageMemoryBarriers ) const
26430 {
26431 vkCmdPipelineBarrier( m_commandBuffer, static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), static_cast<VkDependencyFlags>( dependencyFlags ), memoryBarrierCount, reinterpret_cast<const VkMemoryBarrier*>( pMemoryBarriers ), bufferMemoryBarrierCount, reinterpret_cast<const VkBufferMemoryBarrier*>( pBufferMemoryBarriers ), imageMemoryBarrierCount, reinterpret_cast<const VkImageMemoryBarrier*>( pImageMemoryBarriers ) );
26432 }
26433#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26434 VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( PipelineStageFlags srcStageMask, PipelineStageFlags dstStageMask, DependencyFlags dependencyFlags, ArrayProxy<const MemoryBarrier> memoryBarriers, ArrayProxy<const BufferMemoryBarrier> bufferMemoryBarriers, ArrayProxy<const ImageMemoryBarrier> imageMemoryBarriers ) const
26435 {
26436 vkCmdPipelineBarrier( m_commandBuffer, static_cast<VkPipelineStageFlags>( srcStageMask ), static_cast<VkPipelineStageFlags>( dstStageMask ), static_cast<VkDependencyFlags>( dependencyFlags ), memoryBarriers.size() , reinterpret_cast<const VkMemoryBarrier*>( memoryBarriers.data() ), bufferMemoryBarriers.size() , reinterpret_cast<const VkBufferMemoryBarrier*>( bufferMemoryBarriers.data() ), imageMemoryBarriers.size() , reinterpret_cast<const VkImageMemoryBarrier*>( imageMemoryBarriers.data() ) );
26437 }
26438#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26439
26440 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
26441 {
26442 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
26443 }
26444
26445 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
26446 {
26447 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
26448 }
26449
26450 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
26451 {
26452 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
26453 }
26454
26455 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
26456 {
26457 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
26458 }
26459
26460 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
26461 {
26462 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
26463 }
26464
26465 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
26466 {
26467 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
26468 }
26469#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26470 template <typename T>
26471 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
26472 {
26473 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
26474 }
26475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26476
26477 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
26478 {
26479 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26480 }
26481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26482 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
26483 {
26484 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26485 }
26486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26487
26488 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
26489 {
26490 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
26491 }
26492
26493 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
26494 {
26495 vkCmdEndRenderPass( m_commandBuffer );
26496 }
26497
26498 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
26499 {
26500 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
26501 }
26502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26503 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
26504 {
26505 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
26506 }
26507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26508
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026509 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026510 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026511 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026512 }
26513#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026514 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026515 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026516 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026517 }
26518#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26519
26520 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
26521 {
26522 vkCmdDebugMarkerEndEXT( m_commandBuffer );
26523 }
26524
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026525 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026526 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026527 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026528 }
26529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026530 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026531 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026532 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026533 }
26534#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26535
26536 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26537 {
26538 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26539 }
26540
26541 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26542 {
26543 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26544 }
26545
26546 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
26547 {
26548 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
26549 }
26550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26551 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
26552 {
26553 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
26554 }
26555#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26556
26557 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
26558 {
26559 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
26560 }
26561#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26562 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
26563 {
26564 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
26565 }
26566#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026567
26568 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
26569 {
26570 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
26571 }
26572#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26573 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
26574 {
26575 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
26576 }
26577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26578
26579 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
26580 {
26581 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
26582 }
26583
26584 VULKAN_HPP_INLINE void CommandBuffer::dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
26585 {
26586 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
26587 }
26588
26589 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
26590 {
26591 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
26592 }
26593
26594 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
26595 {
26596 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
26597 }
26598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26599 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
26600 {
26601 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
26602 }
26603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26604
26605 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
26606 {
26607 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
26608 }
26609#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26610 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
26611 {
26612 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
26613 }
26614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026615
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026616 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const
26617 {
26618 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
26619 }
26620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26621 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const
26622 {
26623 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
26624 }
26625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26626
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026627 struct SubmitInfo
26628 {
26629 SubmitInfo( uint32_t waitSemaphoreCount_ = 0, const Semaphore* pWaitSemaphores_ = nullptr, const PipelineStageFlags* pWaitDstStageMask_ = nullptr, uint32_t commandBufferCount_ = 0, const CommandBuffer* pCommandBuffers_ = nullptr, uint32_t signalSemaphoreCount_ = 0, const Semaphore* pSignalSemaphores_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026630 : waitSemaphoreCount( waitSemaphoreCount_ )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026631 , pWaitSemaphores( pWaitSemaphores_ )
26632 , pWaitDstStageMask( pWaitDstStageMask_ )
26633 , commandBufferCount( commandBufferCount_ )
26634 , pCommandBuffers( pCommandBuffers_ )
26635 , signalSemaphoreCount( signalSemaphoreCount_ )
26636 , pSignalSemaphores( pSignalSemaphores_ )
26637 {
26638 }
26639
26640 SubmitInfo( VkSubmitInfo const & rhs )
26641 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026642 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026643 }
26644
26645 SubmitInfo& operator=( VkSubmitInfo const & rhs )
26646 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026647 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026648 return *this;
26649 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026650 SubmitInfo& setPNext( const void* pNext_ )
26651 {
26652 pNext = pNext_;
26653 return *this;
26654 }
26655
26656 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
26657 {
26658 waitSemaphoreCount = waitSemaphoreCount_;
26659 return *this;
26660 }
26661
26662 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
26663 {
26664 pWaitSemaphores = pWaitSemaphores_;
26665 return *this;
26666 }
26667
26668 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
26669 {
26670 pWaitDstStageMask = pWaitDstStageMask_;
26671 return *this;
26672 }
26673
26674 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
26675 {
26676 commandBufferCount = commandBufferCount_;
26677 return *this;
26678 }
26679
26680 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
26681 {
26682 pCommandBuffers = pCommandBuffers_;
26683 return *this;
26684 }
26685
26686 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
26687 {
26688 signalSemaphoreCount = signalSemaphoreCount_;
26689 return *this;
26690 }
26691
26692 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
26693 {
26694 pSignalSemaphores = pSignalSemaphores_;
26695 return *this;
26696 }
26697
26698 operator const VkSubmitInfo&() const
26699 {
26700 return *reinterpret_cast<const VkSubmitInfo*>(this);
26701 }
26702
26703 bool operator==( SubmitInfo const& rhs ) const
26704 {
26705 return ( sType == rhs.sType )
26706 && ( pNext == rhs.pNext )
26707 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
26708 && ( pWaitSemaphores == rhs.pWaitSemaphores )
26709 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
26710 && ( commandBufferCount == rhs.commandBufferCount )
26711 && ( pCommandBuffers == rhs.pCommandBuffers )
26712 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
26713 && ( pSignalSemaphores == rhs.pSignalSemaphores );
26714 }
26715
26716 bool operator!=( SubmitInfo const& rhs ) const
26717 {
26718 return !operator==( rhs );
26719 }
26720
26721 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026722 StructureType sType = StructureType::eSubmitInfo;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026723
26724 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026725 const void* pNext = nullptr;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026726 uint32_t waitSemaphoreCount;
26727 const Semaphore* pWaitSemaphores;
26728 const PipelineStageFlags* pWaitDstStageMask;
26729 uint32_t commandBufferCount;
26730 const CommandBuffer* pCommandBuffers;
26731 uint32_t signalSemaphoreCount;
26732 const Semaphore* pSignalSemaphores;
26733 };
26734 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
26735
26736 class Queue
26737 {
26738 public:
26739 Queue()
26740 : m_queue(VK_NULL_HANDLE)
26741 {}
26742
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026743 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026744 : m_queue(VK_NULL_HANDLE)
26745 {}
26746
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026747 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026748 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026749 {}
26750
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026751#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026752 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026753 {
26754 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026755 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026756 }
26757#endif
26758
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026759 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026760 {
26761 m_queue = VK_NULL_HANDLE;
26762 return *this;
26763 }
26764
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026765 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026766 {
26767 return m_queue == rhs.m_queue;
26768 }
26769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026770 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026771 {
26772 return m_queue != rhs.m_queue;
26773 }
26774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026775 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026776 {
26777 return m_queue < rhs.m_queue;
26778 }
26779
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026780 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026781#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026782 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26784
26785#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026786 Result waitIdle() const;
26787#else
26788 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026789#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26790
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026791 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026793 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026794#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26795
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026796 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026797#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026798 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26800
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026801
26802
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026803 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026804 {
26805 return m_queue;
26806 }
26807
26808 explicit operator bool() const
26809 {
26810 return m_queue != VK_NULL_HANDLE;
26811 }
26812
26813 bool operator!() const
26814 {
26815 return m_queue == VK_NULL_HANDLE;
26816 }
26817
26818 private:
26819 VkQueue m_queue;
26820 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026821
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026822 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
26823
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026824 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
26825 {
26826 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
26827 }
26828#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26829 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
26830 {
26831 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026832 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::submit" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026833 }
26834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26835
26836#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26837 VULKAN_HPP_INLINE Result Queue::waitIdle() const
26838 {
26839 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
26840 }
26841#else
26842 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
26843 {
26844 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026845 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026846 }
26847#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26848
26849 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
26850 {
26851 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
26852 }
26853#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26854 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
26855 {
26856 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026857 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::bindSparse" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026858 }
26859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26860
26861 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
26862 {
26863 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
26864 }
26865#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26866 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
26867 {
26868 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026869 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026870 }
26871#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026872
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026873#ifndef VULKAN_HPP_NO_SMART_HANDLE
26874 class BufferDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026875 template <> class UniqueHandleTraits<Buffer> {public: using deleter = BufferDeleter; };
26876 using UniqueBuffer = UniqueHandle<Buffer>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026877 class BufferViewDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026878 template <> class UniqueHandleTraits<BufferView> {public: using deleter = BufferViewDeleter; };
26879 using UniqueBufferView = UniqueHandle<BufferView>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026880 class CommandBufferDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026881 template <> class UniqueHandleTraits<CommandBuffer> {public: using deleter = CommandBufferDeleter; };
26882 using UniqueCommandBuffer = UniqueHandle<CommandBuffer>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026883 class CommandPoolDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026884 template <> class UniqueHandleTraits<CommandPool> {public: using deleter = CommandPoolDeleter; };
26885 using UniqueCommandPool = UniqueHandle<CommandPool>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026886 class DescriptorPoolDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026887 template <> class UniqueHandleTraits<DescriptorPool> {public: using deleter = DescriptorPoolDeleter; };
26888 using UniqueDescriptorPool = UniqueHandle<DescriptorPool>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026889 class DescriptorSetDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026890 template <> class UniqueHandleTraits<DescriptorSet> {public: using deleter = DescriptorSetDeleter; };
26891 using UniqueDescriptorSet = UniqueHandle<DescriptorSet>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026892 class DescriptorSetLayoutDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026893 template <> class UniqueHandleTraits<DescriptorSetLayout> {public: using deleter = DescriptorSetLayoutDeleter; };
26894 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout>;
Mark Young0f183a82017-02-28 09:58:04 -070026895 class DescriptorUpdateTemplateKHRDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026896 template <> class UniqueHandleTraits<DescriptorUpdateTemplateKHR> {public: using deleter = DescriptorUpdateTemplateKHRDeleter; };
26897 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026898 class DeviceMemoryDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026899 template <> class UniqueHandleTraits<DeviceMemory> {public: using deleter = DeviceMemoryDeleter; };
26900 using UniqueDeviceMemory = UniqueHandle<DeviceMemory>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026901 class EventDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026902 template <> class UniqueHandleTraits<Event> {public: using deleter = EventDeleter; };
26903 using UniqueEvent = UniqueHandle<Event>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026904 class FenceDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026905 template <> class UniqueHandleTraits<Fence> {public: using deleter = FenceDeleter; };
26906 using UniqueFence = UniqueHandle<Fence>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026907 class FramebufferDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026908 template <> class UniqueHandleTraits<Framebuffer> {public: using deleter = FramebufferDeleter; };
26909 using UniqueFramebuffer = UniqueHandle<Framebuffer>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026910 class ImageDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026911 template <> class UniqueHandleTraits<Image> {public: using deleter = ImageDeleter; };
26912 using UniqueImage = UniqueHandle<Image>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026913 class ImageViewDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026914 template <> class UniqueHandleTraits<ImageView> {public: using deleter = ImageViewDeleter; };
26915 using UniqueImageView = UniqueHandle<ImageView>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026916 class IndirectCommandsLayoutNVXDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026917 template <> class UniqueHandleTraits<IndirectCommandsLayoutNVX> {public: using deleter = IndirectCommandsLayoutNVXDeleter; };
26918 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026919 class ObjectTableNVXDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026920 template <> class UniqueHandleTraits<ObjectTableNVX> {public: using deleter = ObjectTableNVXDeleter; };
26921 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026922 class PipelineDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026923 template <> class UniqueHandleTraits<Pipeline> {public: using deleter = PipelineDeleter; };
26924 using UniquePipeline = UniqueHandle<Pipeline>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026925 class PipelineCacheDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026926 template <> class UniqueHandleTraits<PipelineCache> {public: using deleter = PipelineCacheDeleter; };
26927 using UniquePipelineCache = UniqueHandle<PipelineCache>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026928 class PipelineLayoutDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026929 template <> class UniqueHandleTraits<PipelineLayout> {public: using deleter = PipelineLayoutDeleter; };
26930 using UniquePipelineLayout = UniqueHandle<PipelineLayout>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026931 class QueryPoolDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026932 template <> class UniqueHandleTraits<QueryPool> {public: using deleter = QueryPoolDeleter; };
26933 using UniqueQueryPool = UniqueHandle<QueryPool>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026934 class RenderPassDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026935 template <> class UniqueHandleTraits<RenderPass> {public: using deleter = RenderPassDeleter; };
26936 using UniqueRenderPass = UniqueHandle<RenderPass>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026937 class SamplerDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026938 template <> class UniqueHandleTraits<Sampler> {public: using deleter = SamplerDeleter; };
26939 using UniqueSampler = UniqueHandle<Sampler>;
Lenny Komowb79f04a2017-09-18 17:07:00 -060026940 class SamplerYcbcrConversionKHRDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026941 template <> class UniqueHandleTraits<SamplerYcbcrConversionKHR> {public: using deleter = SamplerYcbcrConversionKHRDeleter; };
26942 using UniqueSamplerYcbcrConversionKHR = UniqueHandle<SamplerYcbcrConversionKHR>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026943 class SemaphoreDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026944 template <> class UniqueHandleTraits<Semaphore> {public: using deleter = SemaphoreDeleter; };
26945 using UniqueSemaphore = UniqueHandle<Semaphore>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026946 class ShaderModuleDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026947 template <> class UniqueHandleTraits<ShaderModule> {public: using deleter = ShaderModuleDeleter; };
26948 using UniqueShaderModule = UniqueHandle<ShaderModule>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026949 class SwapchainKHRDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026950 template <> class UniqueHandleTraits<SwapchainKHR> {public: using deleter = SwapchainKHRDeleter; };
26951 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR>;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026952 class ValidationCacheEXTDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026953 template <> class UniqueHandleTraits<ValidationCacheEXT> {public: using deleter = ValidationCacheEXTDeleter; };
26954 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026955#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26956
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026957 class Device
26958 {
26959 public:
26960 Device()
26961 : m_device(VK_NULL_HANDLE)
26962 {}
26963
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026964 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026965 : m_device(VK_NULL_HANDLE)
26966 {}
26967
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026968 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070026969 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026970 {}
26971
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026972#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026973 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026974 {
26975 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026976 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026977 }
26978#endif
26979
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026980 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026981 {
26982 m_device = VK_NULL_HANDLE;
26983 return *this;
26984 }
26985
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026986 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026987 {
26988 return m_device == rhs.m_device;
26989 }
26990
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026991 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026992 {
26993 return m_device != rhs.m_device;
26994 }
26995
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026996 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026997 {
26998 return m_device < rhs.m_device;
26999 }
27000
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027001 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027002#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027003 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027004#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27005
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027006 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027007#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027008 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27010
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027011 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027013 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27015
27016#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027017 Result waitIdle() const;
27018#else
27019 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27021
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027022 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027023#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027024 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27025#ifndef VULKAN_HPP_NO_SMART_HANDLE
27026 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27027#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027028#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27029
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027030 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027032 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27034
27035 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
27036#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27037 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
27038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27039
27040 void unmapMemory( DeviceMemory memory ) const;
27041
27042 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
27043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27044 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
27045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27046
27047 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
27048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27049 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
27050#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27051
27052 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
27053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27054 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
27055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27056
27057 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
27058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27059 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27061
27062#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027063 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
27064#else
27065 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
27066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027067
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027068 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027070 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27072
27073#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027074 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
27075#else
27076 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27078
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027079 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027080#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027081 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027082 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27084
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027085 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027087 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27088#ifndef VULKAN_HPP_NO_SMART_HANDLE
27089 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27090#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027091#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27092
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027093 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027094#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027095 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27097
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027098 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027099#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027100 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27102
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027103 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027104
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027105 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027107 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
27108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27109
27110 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
27111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27112 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27113#ifndef VULKAN_HPP_NO_SMART_HANDLE
27114 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27115#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27117
27118 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
27119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27120 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27122
27123 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
27124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27125 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27126#ifndef VULKAN_HPP_NO_SMART_HANDLE
27127 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27128#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27130
27131 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
27132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27133 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27135
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027136 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027137
27138#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027139 Result setEvent( Event event ) const;
27140#else
27141 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27143
27144#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027145 Result resetEvent( Event event ) const;
27146#else
27147 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027148#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27149
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027150 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027152 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27153#ifndef VULKAN_HPP_NO_SMART_HANDLE
27154 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27155#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27157
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027158 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027160 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27162
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027163 Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27165 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027166 Result getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027167#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27168
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027169 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027171 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27172#ifndef VULKAN_HPP_NO_SMART_HANDLE
27173 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27174#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27176
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027177 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027179 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27181
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027182 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027184 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27185#ifndef VULKAN_HPP_NO_SMART_HANDLE
27186 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27187#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27189
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027190 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027192 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27194
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027195 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027197 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27198#ifndef VULKAN_HPP_NO_SMART_HANDLE
27199 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27200#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27202
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027203 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027205 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27207
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027208 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027210 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27212
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027213 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027215 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27216#ifndef VULKAN_HPP_NO_SMART_HANDLE
27217 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27218#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027219#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27220
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027221 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027222#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027223 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27225
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027226 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027227#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027228 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27229#ifndef VULKAN_HPP_NO_SMART_HANDLE
27230 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27231#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027232#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27233
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027234 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027235#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027236 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027237#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27238
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027239 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027241 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27242#ifndef VULKAN_HPP_NO_SMART_HANDLE
27243 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27244#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027245#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27246
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027247 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027248#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027249 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27251
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027252 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027254 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027255 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27257
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027258 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027260 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27262
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027263 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027264#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027265 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027266 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027267 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27268#ifndef VULKAN_HPP_NO_SMART_HANDLE
27269 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027270 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027271 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27272#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27274
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027275 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027277 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027278 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027279 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27280#ifndef VULKAN_HPP_NO_SMART_HANDLE
27281 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027282 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027283 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27284#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27286
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027287 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027289 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27291
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027292 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027294 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27295#ifndef VULKAN_HPP_NO_SMART_HANDLE
27296 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27297#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27299
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027300 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027302 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027303#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27304
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027305 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027307 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27308#ifndef VULKAN_HPP_NO_SMART_HANDLE
27309 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27310#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27312
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027313 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027315 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27317
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027318 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027319#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027320 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27321#ifndef VULKAN_HPP_NO_SMART_HANDLE
27322 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27323#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27325
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027326 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027328 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27330
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027331 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027333 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27334#ifndef VULKAN_HPP_NO_SMART_HANDLE
27335 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27336#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27338
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027339 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027341 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27343
27344#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027345 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
27346#else
27347 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27349
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027350 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027352 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027353 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027354#ifndef VULKAN_HPP_NO_SMART_HANDLE
27355 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027356 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027357#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027358#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27359
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027360 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027362 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27364
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027365 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027366#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027367 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027368#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27369
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027370 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027372 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27373#ifndef VULKAN_HPP_NO_SMART_HANDLE
27374 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27375#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27377
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027378 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027379#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027380 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027381#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27382
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027383 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027385 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27386#ifndef VULKAN_HPP_NO_SMART_HANDLE
27387 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27388#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027389#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27390
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027391 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027393 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27395
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027396 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027398 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27400
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027401 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027403 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27404#ifndef VULKAN_HPP_NO_SMART_HANDLE
27405 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27406#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27408
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027409 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027410#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027411 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27413
27414#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027415 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
27416#else
27417 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027418#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27419
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027420 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027422 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027423 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027424#ifndef VULKAN_HPP_NO_SMART_HANDLE
27425 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027426 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027427#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27429
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027430 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027432 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27434
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027435 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027436#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027437 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027438 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027439 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27440#ifndef VULKAN_HPP_NO_SMART_HANDLE
27441 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027442 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027443 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27444#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027445#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27446
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027447 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027448#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027449 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27450#ifndef VULKAN_HPP_NO_SMART_HANDLE
27451 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27452#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27454
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027455 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027457 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027458#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27459
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027460 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027461#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027462 template <typename Allocator = std::allocator<Image>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027463 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027464#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27465
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027466 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027468 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027469#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27470
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027471 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027473 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027474#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27475
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027476 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027478 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027479#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27480
Lenny Komow6501c122016-08-31 15:03:49 -060027481#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027482 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
27483#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27484 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
27485#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027486#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27487
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027488 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060027489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027490 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27491#ifndef VULKAN_HPP_NO_SMART_HANDLE
27492 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27493#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027494#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27495
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027496 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027498 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27500
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027501 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027503 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27504#ifndef VULKAN_HPP_NO_SMART_HANDLE
27505 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27506#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27508
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027509 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027510#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027511 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27513
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027514 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027516 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27518
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027519 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027520#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027521 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27523
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027524#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027525 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027526#else
27527 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
27528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027529
Mark Youngabc2d6e2017-07-07 07:59:56 -060027530#ifdef VK_USE_PLATFORM_WIN32_KHR
27531 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027532#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027533 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027534#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027535#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027536
Mark Youngabc2d6e2017-07-07 07:59:56 -060027537#ifdef VK_USE_PLATFORM_WIN32_KHR
27538 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027539#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027540 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027542#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027543
Mark Youngabc2d6e2017-07-07 07:59:56 -060027544 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027546 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27548
Mark Youngabc2d6e2017-07-07 07:59:56 -060027549 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027550#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027551 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27553
Mark Youngabc2d6e2017-07-07 07:59:56 -060027554#ifdef VK_USE_PLATFORM_WIN32_KHR
27555 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027556#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027557 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027558#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027559#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027560
Mark Youngabc2d6e2017-07-07 07:59:56 -060027561#ifdef VK_USE_PLATFORM_WIN32_KHR
27562 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027564 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027565#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027566#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027567
Mark Youngabc2d6e2017-07-07 07:59:56 -060027568 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027570 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027571#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27572
Mark Youngabc2d6e2017-07-07 07:59:56 -060027573 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027574#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027575 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
27576#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27577
27578#ifdef VK_USE_PLATFORM_WIN32_KHR
27579 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
27580#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27581 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
27582#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27583#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27584
27585#ifdef VK_USE_PLATFORM_WIN32_KHR
27586 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
27587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27588 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
27589#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27590#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27591
27592 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
27593#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27594 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
27595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27596
27597 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
27598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27599 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027600#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27601
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027602 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027603#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027604 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027605#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27606
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027607 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027609 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027610#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27611
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027612 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027613#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027614 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027615#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27616
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027617 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070027618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027619 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070027620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27621
Mark Young0f183a82017-02-28 09:58:04 -070027622 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
27623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27624 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
27625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27626
Lenny Komowb79f04a2017-09-18 17:07:00 -060027627 Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027629 ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27631
Lenny Komowb79f04a2017-09-18 17:07:00 -060027632 Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027633#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027634 ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27636
27637 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
27638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27639 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
27640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27641
27642 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
27643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27644 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
27645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27646
27647 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
27648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27649 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
27650#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27651
27652 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
27653#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27654 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27655#ifndef VULKAN_HPP_NO_SMART_HANDLE
27656 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27657#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27658#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27659
27660 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
27661#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27662 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27664
27665 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
27666
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027667 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
27668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27669 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
27670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27671
Mark Lobodzinski54385432017-05-15 10:27:52 -060027672 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
27673
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027674 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
27675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27676 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
27677#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27678
27679 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
27680#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27681 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027682 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27684
Mark Youngabc2d6e2017-07-07 07:59:56 -060027685 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27686#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27687 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027688 template <typename ...T>
27689 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27691
27692 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27694 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027695 template <typename ...T>
27696 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27698
27699 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
27700#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27701 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027702 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27704
Lenny Komowb79f04a2017-09-18 17:07:00 -060027705 Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const;
27706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27707 ResultValueType<SamplerYcbcrConversionKHR>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27708#ifndef VULKAN_HPP_NO_SMART_HANDLE
27709 UniqueSamplerYcbcrConversionKHR createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27710#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27711#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27712
27713 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const;
27714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27715 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27717
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027718 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const;
27719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27720 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27721#ifndef VULKAN_HPP_NO_SMART_HANDLE
27722 UniqueValidationCacheEXT createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27723#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27725
27726 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const;
27727#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27728 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27729#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27730
27731 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const;
27732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27733 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027734 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27736
27737 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const;
27738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27739 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const;
27740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27741
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027742 Result getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const;
27743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27744 template <typename Allocator = std::allocator<uint8_t>>
27745 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType ) const;
27746#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27747
Mark Lobodzinski417d5702017-11-27 12:00:45 -070027748 Result getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const;
27749#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27750 ResultValueType<MemoryHostPointerPropertiesEXT>::type getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer ) const;
27751#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27752
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027753
27754
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027755 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027756 {
27757 return m_device;
27758 }
27759
27760 explicit operator bool() const
27761 {
27762 return m_device != VK_NULL_HANDLE;
27763 }
27764
27765 bool operator!() const
27766 {
27767 return m_device == VK_NULL_HANDLE;
27768 }
27769
27770 private:
27771 VkDevice m_device;
27772 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027773
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027774 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
27775
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027776#ifndef VULKAN_HPP_NO_SMART_HANDLE
27777 class BufferDeleter
27778 {
27779 public:
27780 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27781 : m_device( device )
27782 , m_allocator( allocator )
27783 {}
27784
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027785 Device getDevice() const { return m_device; }
27786 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27787
27788 protected:
27789 void destroy( Buffer buffer )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027790 {
27791 m_device.destroyBuffer( buffer, m_allocator );
27792 }
27793
27794 private:
27795 Device m_device;
27796 Optional<const AllocationCallbacks> m_allocator;
27797 };
27798
27799 class BufferViewDeleter
27800 {
27801 public:
27802 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27803 : m_device( device )
27804 , m_allocator( allocator )
27805 {}
27806
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027807 Device getDevice() const { return m_device; }
27808 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27809
27810 protected:
27811 void destroy( BufferView bufferView )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027812 {
27813 m_device.destroyBufferView( bufferView, m_allocator );
27814 }
27815
27816 private:
27817 Device m_device;
27818 Optional<const AllocationCallbacks> m_allocator;
27819 };
27820
27821 class CommandBufferDeleter
27822 {
27823 public:
27824 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
27825 : m_device( device )
27826 , m_commandPool( commandPool )
27827 {}
27828
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027829 Device getDevice() const { return m_device; }
27830 CommandPool getCommandPool() const { return m_commandPool; }
27831
27832 protected:
27833 void destroy( CommandBuffer commandBuffer )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027834 {
27835 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
27836 }
27837
27838 private:
27839 Device m_device;
27840 CommandPool m_commandPool;
27841 };
27842
27843 class CommandPoolDeleter
27844 {
27845 public:
27846 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27847 : m_device( device )
27848 , m_allocator( allocator )
27849 {}
27850
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027851 Device getDevice() const { return m_device; }
27852 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27853
27854 protected:
27855 void destroy( CommandPool commandPool )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027856 {
27857 m_device.destroyCommandPool( commandPool, m_allocator );
27858 }
27859
27860 private:
27861 Device m_device;
27862 Optional<const AllocationCallbacks> m_allocator;
27863 };
27864
27865 class DescriptorPoolDeleter
27866 {
27867 public:
27868 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27869 : m_device( device )
27870 , m_allocator( allocator )
27871 {}
27872
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027873 Device getDevice() const { return m_device; }
27874 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27875
27876 protected:
27877 void destroy( DescriptorPool descriptorPool )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027878 {
27879 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
27880 }
27881
27882 private:
27883 Device m_device;
27884 Optional<const AllocationCallbacks> m_allocator;
27885 };
27886
27887 class DescriptorSetDeleter
27888 {
27889 public:
27890 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
27891 : m_device( device )
27892 , m_descriptorPool( descriptorPool )
27893 {}
27894
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027895 Device getDevice() const { return m_device; }
27896 DescriptorPool getDescriptorPool() const { return m_descriptorPool; }
27897
27898 protected:
27899 void destroy( DescriptorSet descriptorSet )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027900 {
27901 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
27902 }
27903
27904 private:
27905 Device m_device;
27906 DescriptorPool m_descriptorPool;
27907 };
27908
27909 class DescriptorSetLayoutDeleter
27910 {
27911 public:
27912 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27913 : m_device( device )
27914 , m_allocator( allocator )
27915 {}
27916
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027917 Device getDevice() const { return m_device; }
27918 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27919
27920 protected:
27921 void destroy( DescriptorSetLayout descriptorSetLayout )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027922 {
27923 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
27924 }
27925
27926 private:
27927 Device m_device;
27928 Optional<const AllocationCallbacks> m_allocator;
27929 };
27930
Mark Young0f183a82017-02-28 09:58:04 -070027931 class DescriptorUpdateTemplateKHRDeleter
27932 {
27933 public:
27934 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27935 : m_device( device )
27936 , m_allocator( allocator )
27937 {}
27938
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027939 Device getDevice() const { return m_device; }
27940 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27941
27942 protected:
27943 void destroy( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -070027944 {
27945 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
27946 }
27947
27948 private:
27949 Device m_device;
27950 Optional<const AllocationCallbacks> m_allocator;
27951 };
27952
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027953 class DeviceMemoryDeleter
27954 {
27955 public:
27956 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27957 : m_device( device )
27958 , m_allocator( allocator )
27959 {}
27960
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027961 Device getDevice() const { return m_device; }
27962 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27963
27964 protected:
27965 void destroy( DeviceMemory deviceMemory )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027966 {
27967 m_device.freeMemory( deviceMemory, m_allocator );
27968 }
27969
27970 private:
27971 Device m_device;
27972 Optional<const AllocationCallbacks> m_allocator;
27973 };
27974
27975 class EventDeleter
27976 {
27977 public:
27978 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27979 : m_device( device )
27980 , m_allocator( allocator )
27981 {}
27982
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070027983 Device getDevice() const { return m_device; }
27984 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
27985
27986 protected:
27987 void destroy( Event event )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027988 {
27989 m_device.destroyEvent( event, m_allocator );
27990 }
27991
27992 private:
27993 Device m_device;
27994 Optional<const AllocationCallbacks> m_allocator;
27995 };
27996
27997 class FenceDeleter
27998 {
27999 public:
28000 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28001 : m_device( device )
28002 , m_allocator( allocator )
28003 {}
28004
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028005 Device getDevice() const { return m_device; }
28006 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28007
28008 protected:
28009 void destroy( Fence fence )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028010 {
28011 m_device.destroyFence( fence, m_allocator );
28012 }
28013
28014 private:
28015 Device m_device;
28016 Optional<const AllocationCallbacks> m_allocator;
28017 };
28018
28019 class FramebufferDeleter
28020 {
28021 public:
28022 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28023 : m_device( device )
28024 , m_allocator( allocator )
28025 {}
28026
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028027 Device getDevice() const { return m_device; }
28028 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28029
28030 protected:
28031 void destroy( Framebuffer framebuffer )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028032 {
28033 m_device.destroyFramebuffer( framebuffer, m_allocator );
28034 }
28035
28036 private:
28037 Device m_device;
28038 Optional<const AllocationCallbacks> m_allocator;
28039 };
28040
28041 class ImageDeleter
28042 {
28043 public:
28044 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28045 : m_device( device )
28046 , m_allocator( allocator )
28047 {}
28048
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028049 Device getDevice() const { return m_device; }
28050 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28051
28052 protected:
28053 void destroy( Image image )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028054 {
28055 m_device.destroyImage( image, m_allocator );
28056 }
28057
28058 private:
28059 Device m_device;
28060 Optional<const AllocationCallbacks> m_allocator;
28061 };
28062
28063 class ImageViewDeleter
28064 {
28065 public:
28066 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28067 : m_device( device )
28068 , m_allocator( allocator )
28069 {}
28070
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028071 Device getDevice() const { return m_device; }
28072 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28073
28074 protected:
28075 void destroy( ImageView imageView )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028076 {
28077 m_device.destroyImageView( imageView, m_allocator );
28078 }
28079
28080 private:
28081 Device m_device;
28082 Optional<const AllocationCallbacks> m_allocator;
28083 };
28084
28085 class IndirectCommandsLayoutNVXDeleter
28086 {
28087 public:
28088 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28089 : m_device( device )
28090 , m_allocator( allocator )
28091 {}
28092
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028093 Device getDevice() const { return m_device; }
28094 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28095
28096 protected:
28097 void destroy( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028098 {
28099 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
28100 }
28101
28102 private:
28103 Device m_device;
28104 Optional<const AllocationCallbacks> m_allocator;
28105 };
28106
28107 class ObjectTableNVXDeleter
28108 {
28109 public:
28110 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28111 : m_device( device )
28112 , m_allocator( allocator )
28113 {}
28114
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028115 Device getDevice() const { return m_device; }
28116 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28117
28118 protected:
28119 void destroy( ObjectTableNVX objectTableNVX )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028120 {
28121 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
28122 }
28123
28124 private:
28125 Device m_device;
28126 Optional<const AllocationCallbacks> m_allocator;
28127 };
28128
28129 class PipelineDeleter
28130 {
28131 public:
28132 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28133 : m_device( device )
28134 , m_allocator( allocator )
28135 {}
28136
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028137 Device getDevice() const { return m_device; }
28138 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28139
28140 protected:
28141 void destroy( Pipeline pipeline )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028142 {
28143 m_device.destroyPipeline( pipeline, m_allocator );
28144 }
28145
28146 private:
28147 Device m_device;
28148 Optional<const AllocationCallbacks> m_allocator;
28149 };
28150
28151 class PipelineCacheDeleter
28152 {
28153 public:
28154 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28155 : m_device( device )
28156 , m_allocator( allocator )
28157 {}
28158
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028159 Device getDevice() const { return m_device; }
28160 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28161
28162 protected:
28163 void destroy( PipelineCache pipelineCache )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028164 {
28165 m_device.destroyPipelineCache( pipelineCache, m_allocator );
28166 }
28167
28168 private:
28169 Device m_device;
28170 Optional<const AllocationCallbacks> m_allocator;
28171 };
28172
28173 class PipelineLayoutDeleter
28174 {
28175 public:
28176 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28177 : m_device( device )
28178 , m_allocator( allocator )
28179 {}
28180
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028181 Device getDevice() const { return m_device; }
28182 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28183
28184 protected:
28185 void destroy( PipelineLayout pipelineLayout )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028186 {
28187 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
28188 }
28189
28190 private:
28191 Device m_device;
28192 Optional<const AllocationCallbacks> m_allocator;
28193 };
28194
28195 class QueryPoolDeleter
28196 {
28197 public:
28198 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28199 : m_device( device )
28200 , m_allocator( allocator )
28201 {}
28202
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028203 Device getDevice() const { return m_device; }
28204 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28205
28206 protected:
28207 void destroy( QueryPool queryPool )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028208 {
28209 m_device.destroyQueryPool( queryPool, m_allocator );
28210 }
28211
28212 private:
28213 Device m_device;
28214 Optional<const AllocationCallbacks> m_allocator;
28215 };
28216
28217 class RenderPassDeleter
28218 {
28219 public:
28220 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28221 : m_device( device )
28222 , m_allocator( allocator )
28223 {}
28224
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028225 Device getDevice() const { return m_device; }
28226 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28227
28228 protected:
28229 void destroy( RenderPass renderPass )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028230 {
28231 m_device.destroyRenderPass( renderPass, m_allocator );
28232 }
28233
28234 private:
28235 Device m_device;
28236 Optional<const AllocationCallbacks> m_allocator;
28237 };
28238
28239 class SamplerDeleter
28240 {
28241 public:
28242 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28243 : m_device( device )
28244 , m_allocator( allocator )
28245 {}
28246
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028247 Device getDevice() const { return m_device; }
28248 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28249
28250 protected:
28251 void destroy( Sampler sampler )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028252 {
28253 m_device.destroySampler( sampler, m_allocator );
28254 }
28255
28256 private:
28257 Device m_device;
28258 Optional<const AllocationCallbacks> m_allocator;
28259 };
28260
Lenny Komowb79f04a2017-09-18 17:07:00 -060028261 class SamplerYcbcrConversionKHRDeleter
28262 {
28263 public:
28264 SamplerYcbcrConversionKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28265 : m_device( device )
28266 , m_allocator( allocator )
28267 {}
28268
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028269 Device getDevice() const { return m_device; }
28270 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28271
28272 protected:
28273 void destroy( SamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
Lenny Komowb79f04a2017-09-18 17:07:00 -060028274 {
28275 m_device.destroySamplerYcbcrConversionKHR( samplerYcbcrConversionKHR, m_allocator );
28276 }
28277
28278 private:
28279 Device m_device;
28280 Optional<const AllocationCallbacks> m_allocator;
28281 };
28282
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028283 class SemaphoreDeleter
28284 {
28285 public:
28286 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28287 : m_device( device )
28288 , m_allocator( allocator )
28289 {}
28290
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028291 Device getDevice() const { return m_device; }
28292 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28293
28294 protected:
28295 void destroy( Semaphore semaphore )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028296 {
28297 m_device.destroySemaphore( semaphore, m_allocator );
28298 }
28299
28300 private:
28301 Device m_device;
28302 Optional<const AllocationCallbacks> m_allocator;
28303 };
28304
28305 class ShaderModuleDeleter
28306 {
28307 public:
28308 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28309 : m_device( device )
28310 , m_allocator( allocator )
28311 {}
28312
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028313 Device getDevice() const { return m_device; }
28314 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28315
28316 protected:
28317 void destroy( ShaderModule shaderModule )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028318 {
28319 m_device.destroyShaderModule( shaderModule, m_allocator );
28320 }
28321
28322 private:
28323 Device m_device;
28324 Optional<const AllocationCallbacks> m_allocator;
28325 };
28326
28327 class SwapchainKHRDeleter
28328 {
28329 public:
28330 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28331 : m_device( device )
28332 , m_allocator( allocator )
28333 {}
28334
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028335 Device getDevice() const { return m_device; }
28336 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28337
28338 protected:
28339 void destroy( SwapchainKHR swapchainKHR )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028340 {
28341 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
28342 }
28343
28344 private:
28345 Device m_device;
28346 Optional<const AllocationCallbacks> m_allocator;
28347 };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028348
28349 class ValidationCacheEXTDeleter
28350 {
28351 public:
28352 ValidationCacheEXTDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28353 : m_device( device )
28354 , m_allocator( allocator )
28355 {}
28356
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070028357 Device getDevice() const { return m_device; }
28358 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
28359
28360 protected:
28361 void destroy( ValidationCacheEXT validationCacheEXT )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028362 {
28363 m_device.destroyValidationCacheEXT( validationCacheEXT, m_allocator );
28364 }
28365
28366 private:
28367 Device m_device;
28368 Optional<const AllocationCallbacks> m_allocator;
28369 };
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028370#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28371
28372 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
28373 {
28374 return vkGetDeviceProcAddr( m_device, pName );
28375 }
28376#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28377 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
28378 {
28379 return vkGetDeviceProcAddr( m_device, name.c_str() );
28380 }
28381#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28382
28383 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
28384 {
28385 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28386 }
28387#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28388 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
28389 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028390 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028391 }
28392#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28393
28394 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
28395 {
28396 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
28397 }
28398#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28399 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
28400 {
28401 Queue queue;
28402 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
28403 return queue;
28404 }
28405#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28406
28407#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28408 VULKAN_HPP_INLINE Result Device::waitIdle() const
28409 {
28410 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
28411 }
28412#else
28413 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
28414 {
28415 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028416 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028417 }
28418#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28419
28420 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
28421 {
28422 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
28423 }
28424#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28425 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28426 {
28427 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028428 Result result = static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( &allocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDeviceMemory*>( &memory ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028429 return createResultValue( result, memory, "VULKAN_HPP_NAMESPACE::Device::allocateMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028430 }
28431#ifndef VULKAN_HPP_NO_SMART_HANDLE
28432 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28433 {
28434 DeviceMemoryDeleter deleter( *this, allocator );
28435 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
28436 }
28437#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28438#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28439
28440 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
28441 {
28442 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28443 }
28444#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28445 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
28446 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028447 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028448 }
28449#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28450
28451 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
28452 {
28453 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
28454 }
28455#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28456 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
28457 {
28458 void* pData;
28459 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028460 return createResultValue( result, pData, "VULKAN_HPP_NAMESPACE::Device::mapMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028461 }
28462#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28463
28464 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
28465 {
28466 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
28467 }
28468
28469 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28470 {
28471 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28472 }
28473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28474 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28475 {
28476 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028477 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::flushMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028478 }
28479#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28480
28481 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28482 {
28483 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28484 }
28485#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28486 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28487 {
28488 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028489 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::invalidateMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028490 }
28491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28492
28493 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
28494 {
28495 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
28496 }
28497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28498 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
28499 {
28500 DeviceSize committedMemoryInBytes;
28501 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
28502 return committedMemoryInBytes;
28503 }
28504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28505
28506 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
28507 {
28508 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28509 }
28510#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28511 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
28512 {
28513 MemoryRequirements memoryRequirements;
28514 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28515 return memoryRequirements;
28516 }
28517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28518
28519#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28520 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28521 {
28522 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28523 }
28524#else
28525 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28526 {
28527 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028528 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028529 }
28530#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28531
28532 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
28533 {
28534 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28535 }
28536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28537 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
28538 {
28539 MemoryRequirements memoryRequirements;
28540 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28541 return memoryRequirements;
28542 }
28543#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28544
28545#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28546 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28547 {
28548 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28549 }
28550#else
28551 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28552 {
28553 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028554 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028555 }
28556#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28557
28558 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
28559 {
28560 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
28561 }
28562#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28563 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028564 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028565 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028566 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028567 uint32_t sparseMemoryRequirementCount;
28568 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
28569 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
28570 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
28571 return sparseMemoryRequirements;
28572 }
28573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28574
28575 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28576 {
28577 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
28578 }
28579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28580 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28581 {
28582 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028583 Result result = static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028584 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::createFence" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028585 }
28586#ifndef VULKAN_HPP_NO_SMART_HANDLE
28587 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28588 {
28589 FenceDeleter deleter( *this, allocator );
28590 return UniqueFence( createFence( createInfo, allocator ), deleter );
28591 }
28592#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28593#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28594
28595 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
28596 {
28597 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28598 }
28599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28600 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
28601 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028602 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028603 }
28604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28605
28606 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
28607 {
28608 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
28609 }
28610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28611 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
28612 {
28613 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028614 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetFences" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028615 }
28616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28617
28618#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28619 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28620 {
28621 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
28622 }
28623#else
28624 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28625 {
28626 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028627 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028628 }
28629#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28630
28631 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
28632 {
28633 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
28634 }
28635#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28636 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
28637 {
28638 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028639 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028640 }
28641#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28642
28643 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
28644 {
28645 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
28646 }
28647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28648 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28649 {
28650 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028651 Result result = static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSemaphore*>( &semaphore ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028652 return createResultValue( result, semaphore, "VULKAN_HPP_NAMESPACE::Device::createSemaphore" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028653 }
28654#ifndef VULKAN_HPP_NO_SMART_HANDLE
28655 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28656 {
28657 SemaphoreDeleter deleter( *this, allocator );
28658 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
28659 }
28660#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28662
28663 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
28664 {
28665 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28666 }
28667#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28668 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
28669 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028670 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028671 }
28672#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28673
28674 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
28675 {
28676 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
28677 }
28678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28679 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28680 {
28681 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028682 Result result = static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkEvent*>( &event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028683 return createResultValue( result, event, "VULKAN_HPP_NAMESPACE::Device::createEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028684 }
28685#ifndef VULKAN_HPP_NO_SMART_HANDLE
28686 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28687 {
28688 EventDeleter deleter( *this, allocator );
28689 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
28690 }
28691#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28693
28694 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
28695 {
28696 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28697 }
28698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28699 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
28700 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028701 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028702 }
28703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28704
28705#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28706 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28707 {
28708 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
28709 }
28710#else
28711 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28712 {
28713 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028714 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028715 }
28716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28717
28718#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28719 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
28720 {
28721 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
28722 }
28723#else
28724 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
28725 {
28726 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028727 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::setEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028728 }
28729#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28730
28731#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28732 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
28733 {
28734 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
28735 }
28736#else
28737 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
28738 {
28739 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028740 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028741 }
28742#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28743
28744 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
28745 {
28746 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
28747 }
28748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28749 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28750 {
28751 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028752 Result result = static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkQueryPool*>( &queryPool ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028753 return createResultValue( result, queryPool, "VULKAN_HPP_NAMESPACE::Device::createQueryPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028754 }
28755#ifndef VULKAN_HPP_NO_SMART_HANDLE
28756 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28757 {
28758 QueryPoolDeleter deleter( *this, allocator );
28759 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
28760 }
28761#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28762#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28763
28764 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
28765 {
28766 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28767 }
28768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28769 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
28770 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028771 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028772 }
28773#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28774
28775 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
28776 {
28777 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
28778 }
28779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28780 template <typename T>
28781 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
28782 {
28783 Result result = static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, data.size() * sizeof( T ) , reinterpret_cast<void*>( data.data() ), stride, static_cast<VkQueryResultFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028784 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028785 }
28786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28787
28788 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
28789 {
28790 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
28791 }
28792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28793 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28794 {
28795 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028796 Result result = static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBuffer*>( &buffer ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028797 return createResultValue( result, buffer, "VULKAN_HPP_NAMESPACE::Device::createBuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028798 }
28799#ifndef VULKAN_HPP_NO_SMART_HANDLE
28800 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28801 {
28802 BufferDeleter deleter( *this, allocator );
28803 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
28804 }
28805#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28807
28808 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
28809 {
28810 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28811 }
28812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28813 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
28814 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028815 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028816 }
28817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28818
28819 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
28820 {
28821 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
28822 }
28823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28824 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28825 {
28826 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028827 Result result = static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBufferView*>( &view ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028828 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createBufferView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028829 }
28830#ifndef VULKAN_HPP_NO_SMART_HANDLE
28831 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28832 {
28833 BufferViewDeleter deleter( *this, allocator );
28834 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
28835 }
28836#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28838
28839 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
28840 {
28841 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28842 }
28843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28844 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
28845 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028846 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028847 }
28848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28849
28850 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
28851 {
28852 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
28853 }
28854#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28855 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28856 {
28857 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028858 Result result = static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImage*>( &image ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028859 return createResultValue( result, image, "VULKAN_HPP_NAMESPACE::Device::createImage" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028860 }
28861#ifndef VULKAN_HPP_NO_SMART_HANDLE
28862 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28863 {
28864 ImageDeleter deleter( *this, allocator );
28865 return UniqueImage( createImage( createInfo, allocator ), deleter );
28866 }
28867#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28868#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28869
28870 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
28871 {
28872 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28873 }
28874#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28875 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
28876 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028877 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028878 }
28879#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28880
28881 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
28882 {
28883 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
28884 }
28885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28886 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
28887 {
28888 SubresourceLayout layout;
28889 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
28890 return layout;
28891 }
28892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28893
28894 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
28895 {
28896 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
28897 }
28898#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28899 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28900 {
28901 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028902 Result result = static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImageView*>( &view ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028903 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createImageView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028904 }
28905#ifndef VULKAN_HPP_NO_SMART_HANDLE
28906 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28907 {
28908 ImageViewDeleter deleter( *this, allocator );
28909 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
28910 }
28911#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28913
28914 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
28915 {
28916 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28917 }
28918#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28919 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
28920 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028921 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028922 }
28923#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28924
28925 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
28926 {
28927 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
28928 }
28929#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28930 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28931 {
28932 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028933 Result result = static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkShaderModule*>( &shaderModule ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028934 return createResultValue( result, shaderModule, "VULKAN_HPP_NAMESPACE::Device::createShaderModule" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028935 }
28936#ifndef VULKAN_HPP_NO_SMART_HANDLE
28937 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28938 {
28939 ShaderModuleDeleter deleter( *this, allocator );
28940 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
28941 }
28942#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28944
28945 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
28946 {
28947 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28948 }
28949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28950 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
28951 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028952 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028953 }
28954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28955
28956 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
28957 {
28958 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
28959 }
28960#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28961 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28962 {
28963 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028964 Result result = static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineCache*>( &pipelineCache ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028965 return createResultValue( result, pipelineCache, "VULKAN_HPP_NAMESPACE::Device::createPipelineCache" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028966 }
28967#ifndef VULKAN_HPP_NO_SMART_HANDLE
28968 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28969 {
28970 PipelineCacheDeleter deleter( *this, allocator );
28971 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
28972 }
28973#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28975
28976 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
28977 {
28978 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28979 }
28980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28981 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
28982 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028983 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028984 }
28985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28986
28987 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
28988 {
28989 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
28990 }
28991#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28992 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028993 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028994 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028995 std::vector<uint8_t,Allocator> data;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028996 size_t dataSize;
28997 Result result;
28998 do
28999 {
29000 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
29001 if ( ( result == Result::eSuccess ) && dataSize )
29002 {
29003 data.resize( dataSize );
29004 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
29005 }
29006 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029007 assert( dataSize <= data.size() );
29008 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029009 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getPipelineCacheData" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029010 }
29011#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29012
29013 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
29014 {
29015 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
29016 }
29017#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29018 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
29019 {
29020 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029021 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergePipelineCaches" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029022 }
29023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29024
29025 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
29026 {
29027 return static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
29028 }
29029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29030 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029031 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029032 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029033 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029034 Result result = static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029035 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029036 }
29037 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29038 {
29039 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029040 Result result = static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029041 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029042 }
29043#ifndef VULKAN_HPP_NO_SMART_HANDLE
29044 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029045 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029046 {
29047 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029048 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029049 std::vector<UniquePipeline> uniquePipelines;
29050 uniquePipelines.reserve( pipelines.size() );
29051 for ( auto pipeline : pipelines )
29052 {
29053 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
29054 }
29055 return uniquePipelines;
29056 }
29057 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29058 {
29059 PipelineDeleter deleter( *this, allocator );
29060 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
29061 }
29062#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29063#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29064
29065 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
29066 {
29067 return static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfoCount, reinterpret_cast<const VkComputePipelineCreateInfo*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipeline*>( pPipelines ) ) );
29068 }
29069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29070 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029071 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029072 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029073 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029074 Result result = static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkComputePipelineCreateInfo*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029075 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createComputePipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029076 }
29077 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29078 {
29079 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029080 Result result = static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkComputePipelineCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029081 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createComputePipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029082 }
29083#ifndef VULKAN_HPP_NO_SMART_HANDLE
29084 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029085 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029086 {
29087 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029088 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029089 std::vector<UniquePipeline> uniquePipelines;
29090 uniquePipelines.reserve( pipelines.size() );
29091 for ( auto pipeline : pipelines )
29092 {
29093 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
29094 }
29095 return uniquePipelines;
29096 }
29097 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29098 {
29099 PipelineDeleter deleter( *this, allocator );
29100 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
29101 }
29102#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29104
29105 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
29106 {
29107 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29108 }
29109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29110 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
29111 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029112 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029113 }
29114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29115
29116 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
29117 {
29118 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
29119 }
29120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29121 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29122 {
29123 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029124 Result result = static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineLayout*>( &pipelineLayout ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029125 return createResultValue( result, pipelineLayout, "VULKAN_HPP_NAMESPACE::Device::createPipelineLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029126 }
29127#ifndef VULKAN_HPP_NO_SMART_HANDLE
29128 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29129 {
29130 PipelineLayoutDeleter deleter( *this, allocator );
29131 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
29132 }
29133#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29135
29136 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
29137 {
29138 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29139 }
29140#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29141 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
29142 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029143 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029144 }
29145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29146
29147 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
29148 {
29149 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
29150 }
29151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29152 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29153 {
29154 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029155 Result result = static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSampler*>( &sampler ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029156 return createResultValue( result, sampler, "VULKAN_HPP_NAMESPACE::Device::createSampler" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029157 }
29158#ifndef VULKAN_HPP_NO_SMART_HANDLE
29159 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29160 {
29161 SamplerDeleter deleter( *this, allocator );
29162 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
29163 }
29164#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29166
29167 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
29168 {
29169 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29170 }
29171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29172 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
29173 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029174 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029175 }
29176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29177
29178 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
29179 {
29180 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
29181 }
29182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29183 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29184 {
29185 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029186 Result result = static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorSetLayout*>( &setLayout ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029187 return createResultValue( result, setLayout, "VULKAN_HPP_NAMESPACE::Device::createDescriptorSetLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029188 }
29189#ifndef VULKAN_HPP_NO_SMART_HANDLE
29190 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29191 {
29192 DescriptorSetLayoutDeleter deleter( *this, allocator );
29193 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
29194 }
29195#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29197
29198 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
29199 {
29200 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29201 }
29202#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29203 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
29204 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029205 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029206 }
29207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29208
29209 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
29210 {
29211 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
29212 }
29213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29214 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29215 {
29216 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029217 Result result = static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorPool*>( &descriptorPool ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029218 return createResultValue( result, descriptorPool, "VULKAN_HPP_NAMESPACE::Device::createDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029219 }
29220#ifndef VULKAN_HPP_NO_SMART_HANDLE
29221 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29222 {
29223 DescriptorPoolDeleter deleter( *this, allocator );
29224 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
29225 }
29226#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29228
29229 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
29230 {
29231 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29232 }
29233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29234 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
29235 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029236 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029237 }
29238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29239
29240#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29241 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
29242 {
29243 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
29244 }
29245#else
29246 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
29247 {
29248 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029249 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029250 }
29251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29252
29253 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
29254 {
29255 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
29256 }
29257#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29258 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029259 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029260 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029261 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029262 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029263 return createResultValue( result, descriptorSets, "VULKAN_HPP_NAMESPACE::Device::allocateDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029264 }
29265#ifndef VULKAN_HPP_NO_SMART_HANDLE
29266 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029267 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029268 {
29269 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029270 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029271 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
29272 uniqueDescriptorSets.reserve( descriptorSets.size() );
29273 for ( auto descriptorSet : descriptorSets )
29274 {
29275 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
29276 }
29277 return uniqueDescriptorSets;
29278 }
29279#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29281
29282 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
29283 {
29284 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
29285 }
29286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29287 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
29288 {
29289 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029290 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::freeDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029291 }
29292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29293
29294 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
29295 {
29296 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
29297 }
29298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29299 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
29300 {
29301 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
29302 }
29303#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29304
29305 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
29306 {
29307 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
29308 }
29309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29310 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29311 {
29312 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029313 Result result = static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFramebuffer*>( &framebuffer ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029314 return createResultValue( result, framebuffer, "VULKAN_HPP_NAMESPACE::Device::createFramebuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029315 }
29316#ifndef VULKAN_HPP_NO_SMART_HANDLE
29317 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29318 {
29319 FramebufferDeleter deleter( *this, allocator );
29320 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
29321 }
29322#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29324
29325 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
29326 {
29327 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29328 }
29329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29330 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
29331 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029332 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029333 }
29334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29335
29336 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
29337 {
29338 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
29339 }
29340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29341 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29342 {
29343 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029344 Result result = static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029345 return createResultValue( result, renderPass, "VULKAN_HPP_NAMESPACE::Device::createRenderPass" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029346 }
29347#ifndef VULKAN_HPP_NO_SMART_HANDLE
29348 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29349 {
29350 RenderPassDeleter deleter( *this, allocator );
29351 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
29352 }
29353#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29355
29356 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
29357 {
29358 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29359 }
29360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29361 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
29362 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029363 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029364 }
29365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29366
29367 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
29368 {
29369 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
29370 }
29371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29372 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
29373 {
29374 Extent2D granularity;
29375 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
29376 return granularity;
29377 }
29378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29379
29380 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
29381 {
29382 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
29383 }
29384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29385 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29386 {
29387 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029388 Result result = static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkCommandPool*>( &commandPool ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029389 return createResultValue( result, commandPool, "VULKAN_HPP_NAMESPACE::Device::createCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029390 }
29391#ifndef VULKAN_HPP_NO_SMART_HANDLE
29392 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29393 {
29394 CommandPoolDeleter deleter( *this, allocator );
29395 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
29396 }
29397#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29398#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29399
29400 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
29401 {
29402 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29403 }
29404#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29405 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
29406 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029407 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029408 }
29409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29410
29411#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29412 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29413 {
29414 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
29415 }
29416#else
29417 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29418 {
29419 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029420 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029421 }
29422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29423
29424 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
29425 {
29426 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
29427 }
29428#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29429 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029430 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029431 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029432 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029433 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029434 return createResultValue( result, commandBuffers, "VULKAN_HPP_NAMESPACE::Device::allocateCommandBuffers" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029435 }
29436#ifndef VULKAN_HPP_NO_SMART_HANDLE
29437 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029438 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029439 {
29440 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029441 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029442 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
29443 uniqueCommandBuffers.reserve( commandBuffers.size() );
29444 for ( auto commandBuffer : commandBuffers )
29445 {
29446 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
29447 }
29448 return uniqueCommandBuffers;
29449 }
29450#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29451#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29452
29453 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
29454 {
29455 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
29456 }
29457#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29458 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
29459 {
29460 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
29461 }
29462#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29463
29464 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
29465 {
29466 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
29467 }
29468#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29469 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029470 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029471 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029472 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029473 Result result = static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( swapchains.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029474 return createResultValue( result, swapchains, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029475 }
29476 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29477 {
29478 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029479 Result result = static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029480 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029481 }
29482#ifndef VULKAN_HPP_NO_SMART_HANDLE
29483 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029484 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029485 {
29486 SwapchainKHRDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029487 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029488 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
29489 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
29490 for ( auto swapchainKHR : swapchainKHRs )
29491 {
29492 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
29493 }
29494 return uniqueSwapchainKHRs;
29495 }
29496 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29497 {
29498 SwapchainKHRDeleter deleter( *this, allocator );
29499 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
29500 }
29501#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29503
29504 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
29505 {
29506 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
29507 }
29508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29509 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29510 {
29511 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029512 Result result = static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029513 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029514 }
29515#ifndef VULKAN_HPP_NO_SMART_HANDLE
29516 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29517 {
29518 SwapchainKHRDeleter deleter( *this, allocator );
29519 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
29520 }
29521#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29523
29524 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
29525 {
29526 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29527 }
29528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29529 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
29530 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029531 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029532 }
29533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29534
29535 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
29536 {
29537 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
29538 }
29539#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29540 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029541 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029542 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029543 std::vector<Image,Allocator> swapchainImages;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029544 uint32_t swapchainImageCount;
29545 Result result;
29546 do
29547 {
29548 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
29549 if ( ( result == Result::eSuccess ) && swapchainImageCount )
29550 {
29551 swapchainImages.resize( swapchainImageCount );
29552 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
29553 }
29554 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029555 assert( swapchainImageCount <= swapchainImages.size() );
29556 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029557 return createResultValue( result, swapchainImages, "VULKAN_HPP_NAMESPACE::Device::getSwapchainImagesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029558 }
29559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29560
29561 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
29562 {
29563 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
29564 }
29565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29566 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
29567 {
29568 uint32_t imageIndex;
29569 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029570 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029571 }
29572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29573
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029574 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029575 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029576 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029577 }
29578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029579 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029580 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029581 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029582 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029583 }
29584#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29585
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029586 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029587 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029588 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029589 }
29590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029591 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029592 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029593 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029594 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029595 }
29596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29597
29598#ifdef VK_USE_PLATFORM_WIN32_KHR
29599 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
29600 {
29601 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
29602 }
29603#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29604 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
29605 {
29606 HANDLE handle;
29607 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029608 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029609 }
29610#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29611#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29612
29613 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
29614 {
29615 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
29616 }
29617#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29618 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29619 {
29620 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029621 Result result = static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( &indirectCommandsLayout ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029622 return createResultValue( result, indirectCommandsLayout, "VULKAN_HPP_NAMESPACE::Device::createIndirectCommandsLayoutNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029623 }
29624#ifndef VULKAN_HPP_NO_SMART_HANDLE
29625 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29626 {
29627 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
29628 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
29629 }
29630#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29631#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29632
29633 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
29634 {
29635 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29636 }
29637#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29638 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
29639 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029640 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029641 }
29642#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29643
29644 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
29645 {
29646 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
29647 }
29648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29649 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29650 {
29651 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029652 Result result = static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkObjectTableNVX*>( &objectTable ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029653 return createResultValue( result, objectTable, "VULKAN_HPP_NAMESPACE::Device::createObjectTableNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029654 }
29655#ifndef VULKAN_HPP_NO_SMART_HANDLE
29656 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29657 {
29658 ObjectTableNVXDeleter deleter( *this, allocator );
29659 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
29660 }
29661#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29663
29664 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
29665 {
29666 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29667 }
29668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29669 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
29670 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029671 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029672 }
29673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29674
29675 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
29676 {
29677 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
29678 }
29679#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29680 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
29681 {
29682#ifdef VULKAN_HPP_NO_EXCEPTIONS
29683 assert( pObjectTableEntries.size() == objectIndices.size() );
29684#else
29685 if ( pObjectTableEntries.size() != objectIndices.size() )
29686 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029687 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029688 }
29689#endif // VULKAN_HPP_NO_EXCEPTIONS
29690 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029691 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029692 }
29693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29694
29695 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
29696 {
29697 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
29698 }
29699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29700 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
29701 {
29702#ifdef VULKAN_HPP_NO_EXCEPTIONS
29703 assert( objectEntryTypes.size() == objectIndices.size() );
29704#else
29705 if ( objectEntryTypes.size() != objectIndices.size() )
29706 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029707 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029708 }
29709#endif // VULKAN_HPP_NO_EXCEPTIONS
29710 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029711 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029712 }
29713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29714
29715 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
29716 {
29717 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
29718 }
29719
Mark Youngabc2d6e2017-07-07 07:59:56 -060029720#ifdef VK_USE_PLATFORM_WIN32_KHR
29721 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029722 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029723 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029724 }
29725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029726 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029727 {
29728 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029729 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029730 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029731 }
29732#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029733#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029734
Mark Youngabc2d6e2017-07-07 07:59:56 -060029735#ifdef VK_USE_PLATFORM_WIN32_KHR
29736 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029737 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029738 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029739 }
29740#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029741 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029742 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029743 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
29744 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029745 return createResultValue( result, memoryWin32HandleProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029746 }
29747#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029748#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029749
Mark Youngabc2d6e2017-07-07 07:59:56 -060029750 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029751 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029752 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029753 }
29754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029755 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029756 {
29757 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029758 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029759 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029760 }
29761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29762
Mark Youngabc2d6e2017-07-07 07:59:56 -060029763 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029764 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029765 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029766 }
29767#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029768 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029769 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029770 MemoryFdPropertiesKHR memoryFdProperties;
29771 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029772 return createResultValue( result, memoryFdProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029773 }
29774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29775
Mark Youngabc2d6e2017-07-07 07:59:56 -060029776#ifdef VK_USE_PLATFORM_WIN32_KHR
29777 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029778 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029779 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029780 }
29781#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029782 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029783 {
29784 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029785 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029786 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029787 }
29788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029789#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029790
Mark Youngabc2d6e2017-07-07 07:59:56 -060029791#ifdef VK_USE_PLATFORM_WIN32_KHR
29792 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029793 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029794 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029795 }
29796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029797 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029798 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029799 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029800 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029801 }
29802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029803#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029804
Mark Youngabc2d6e2017-07-07 07:59:56 -060029805 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029806 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029807 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029808 }
29809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029810 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029811 {
29812 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029813 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029814 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029815 }
29816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29817
Mark Youngabc2d6e2017-07-07 07:59:56 -060029818 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029819 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029820 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029821 }
29822#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029823 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029824 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029825 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029826 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029827 }
29828#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29829
29830#ifdef VK_USE_PLATFORM_WIN32_KHR
29831 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
29832 {
29833 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
29834 }
29835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29836 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
29837 {
29838 HANDLE handle;
29839 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029840 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029841 }
29842#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29843#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29844
29845#ifdef VK_USE_PLATFORM_WIN32_KHR
29846 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
29847 {
29848 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
29849 }
29850#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29851 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
29852 {
29853 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029854 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029855 }
29856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29857#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29858
29859 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
29860 {
29861 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
29862 }
29863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29864 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
29865 {
29866 int fd;
29867 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029868 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getFenceFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029869 }
29870#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29871
29872 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
29873 {
29874 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
29875 }
29876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29877 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
29878 {
29879 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029880 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029881 }
29882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29883
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029884 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
29885 {
29886 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
29887 }
29888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29889 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
29890 {
29891 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029892 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::displayPowerControlEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029893 }
29894#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29895
29896 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29897 {
29898 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
29899 }
29900#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029901 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029902 {
29903 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029904 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029905 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029906 }
29907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29908
29909 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29910 {
29911 return static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( pDisplayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
29912 }
29913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029914 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029915 {
29916 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029917 Result result = static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( &displayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029918 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerDisplayEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029919 }
29920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29921
29922 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
29923 {
29924 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
29925 }
29926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29927 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
29928 {
29929 uint64_t counterValue;
29930 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029931 return createResultValue( result, counterValue, "VULKAN_HPP_NAMESPACE::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029932 }
29933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029934
29935 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
29936 {
29937 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
29938 }
29939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29940 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
29941 {
29942 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
29943 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
29944 return peerMemoryFeatures;
29945 }
29946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29947
Lenny Komowb79f04a2017-09-18 17:07:00 -060029948 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029949 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029950 return static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029951 }
29952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029953 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029954 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029955 Result result = static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029956 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029957 }
29958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29959
Lenny Komowb79f04a2017-09-18 17:07:00 -060029960 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029961 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029962 return static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029963 }
29964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029965 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029966 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029967 Result result = static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029968 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029969 }
29970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29971
29972 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
29973 {
29974 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
29975 }
29976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29977 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
29978 {
29979 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
29980 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029981 return createResultValue( result, deviceGroupPresentCapabilities, "VULKAN_HPP_NAMESPACE::Device::getGroupPresentCapabilitiesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029982 }
29983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29984
29985 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
29986 {
29987 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
29988 }
29989#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29990 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
29991 {
29992 DeviceGroupPresentModeFlagsKHX modes;
29993 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029994 return createResultValue( result, modes, "VULKAN_HPP_NAMESPACE::Device::getGroupSurfacePresentModesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029995 }
29996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29997
29998 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
29999 {
30000 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
30001 }
30002#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30003 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
30004 {
30005 uint32_t imageIndex;
30006 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030007 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Young0f183a82017-02-28 09:58:04 -070030008 }
30009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30010
30011 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
30012 {
30013 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
30014 }
30015#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30016 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30017 {
30018 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030019 Result result = static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( &descriptorUpdateTemplate ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030020 return createResultValue( result, descriptorUpdateTemplate, "VULKAN_HPP_NAMESPACE::Device::createDescriptorUpdateTemplateKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070030021 }
30022#ifndef VULKAN_HPP_NO_SMART_HANDLE
30023 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30024 {
30025 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
30026 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
30027 }
30028#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30030
30031 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
30032 {
30033 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30034 }
30035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30036 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
30037 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030038 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070030039 }
30040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30041
30042 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
30043 {
30044 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
30045 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030046
30047 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
30048 {
30049 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
30050 }
30051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30052 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
30053 {
30054#ifdef VULKAN_HPP_NO_EXCEPTIONS
30055 assert( swapchains.size() == metadata.size() );
30056#else
30057 if ( swapchains.size() != metadata.size() )
30058 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030059 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030060 }
30061#endif // VULKAN_HPP_NO_EXCEPTIONS
30062 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
30063 }
30064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30065
Mark Lobodzinski54385432017-05-15 10:27:52 -060030066#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
30067 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
30068 {
30069 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
30070 }
30071#else
30072 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
30073 {
30074 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030075 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski54385432017-05-15 10:27:52 -060030076 }
30077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30078
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030079 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
30080 {
30081 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
30082 }
30083#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30084 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
30085 {
30086 RefreshCycleDurationGOOGLE displayTimingProperties;
30087 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030088 return createResultValue( result, displayTimingProperties, "VULKAN_HPP_NAMESPACE::Device::getRefreshCycleDurationGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030089 }
30090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30091
30092 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
30093 {
30094 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
30095 }
30096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30097 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030098 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030099 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030100 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030101 uint32_t presentationTimingCount;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070030102 Result result;
30103 do
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030104 {
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070030105 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
30106 if ( ( result == Result::eSuccess ) && presentationTimingCount )
30107 {
30108 presentationTimings.resize( presentationTimingCount );
30109 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
30110 }
30111 } while ( result == Result::eIncomplete );
30112 assert( presentationTimingCount <= presentationTimings.size() );
30113 presentationTimings.resize( presentationTimingCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030114 return createResultValue( result, presentationTimings, "VULKAN_HPP_NAMESPACE::Device::getPastPresentationTimingGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030115 }
30116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30117
Mark Youngabc2d6e2017-07-07 07:59:56 -060030118 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
30119 {
30120 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
30121 }
30122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30123 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
30124 {
30125 MemoryRequirements2KHR memoryRequirements;
30126 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30127 return memoryRequirements;
30128 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030129 template <typename ...T>
30130 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
30131 {
30132 StructureChain<T...> structureChain;
30133 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
30134 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30135 return structureChain;
30136 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060030137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30138
30139 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
30140 {
30141 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
30142 }
30143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30144 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
30145 {
30146 MemoryRequirements2KHR memoryRequirements;
30147 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30148 return memoryRequirements;
30149 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030150 template <typename ...T>
30151 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
30152 {
30153 StructureChain<T...> structureChain;
30154 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
30155 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30156 return structureChain;
30157 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060030158#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30159
30160 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
30161 {
30162 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
30163 }
30164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30165 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030166 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
Mark Youngabc2d6e2017-07-07 07:59:56 -060030167 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030168 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
Mark Youngabc2d6e2017-07-07 07:59:56 -060030169 uint32_t sparseMemoryRequirementCount;
30170 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
30171 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
30172 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
30173 return sparseMemoryRequirements;
30174 }
30175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30176
Lenny Komowb79f04a2017-09-18 17:07:00 -060030177 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const
30178 {
30179 return static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( pYcbcrConversion ) ) );
30180 }
30181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30182 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversionKHR>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30183 {
30184 SamplerYcbcrConversionKHR ycbcrConversion;
30185 Result result = static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( &ycbcrConversion ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030186 return createResultValue( result, ycbcrConversion, "VULKAN_HPP_NAMESPACE::Device::createSamplerYcbcrConversionKHR" );
Lenny Komowb79f04a2017-09-18 17:07:00 -060030187 }
30188#ifndef VULKAN_HPP_NO_SMART_HANDLE
30189 VULKAN_HPP_INLINE UniqueSamplerYcbcrConversionKHR Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30190 {
30191 SamplerYcbcrConversionKHRDeleter deleter( *this, allocator );
30192 return UniqueSamplerYcbcrConversionKHR( createSamplerYcbcrConversionKHR( createInfo, allocator ), deleter );
30193 }
30194#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30196
30197 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const
30198 {
30199 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30200 }
30201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30202 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator ) const
30203 {
30204 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
30205 }
30206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30207
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030208 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const
30209 {
30210 return static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
30211 }
30212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30213 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30214 {
30215 ValidationCacheEXT validationCache;
30216 Result result = static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkValidationCacheEXT*>( &validationCache ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030217 return createResultValue( result, validationCache, "VULKAN_HPP_NAMESPACE::Device::createValidationCacheEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030218 }
30219#ifndef VULKAN_HPP_NO_SMART_HANDLE
30220 VULKAN_HPP_INLINE UniqueValidationCacheEXT Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30221 {
30222 ValidationCacheEXTDeleter deleter( *this, allocator );
30223 return UniqueValidationCacheEXT( createValidationCacheEXT( createInfo, allocator ), deleter );
30224 }
30225#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30226#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30227
30228 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const
30229 {
30230 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30231 }
30232#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30233 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator ) const
30234 {
30235 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
30236 }
30237#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30238
30239 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
30240 {
30241 return static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
30242 }
30243#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30244 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030245 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030246 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030247 std::vector<uint8_t,Allocator> data;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030248 size_t dataSize;
30249 Result result;
30250 do
30251 {
30252 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
30253 if ( ( result == Result::eSuccess ) && dataSize )
30254 {
30255 data.resize( dataSize );
30256 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
30257 }
30258 } while ( result == Result::eIncomplete );
30259 assert( dataSize <= data.size() );
30260 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030261 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getValidationCacheDataEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030262 }
30263#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30264
30265 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const
30266 {
30267 return static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
30268 }
30269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30270 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const
30271 {
30272 Result result = static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCaches.size() , reinterpret_cast<const VkValidationCacheEXT*>( srcCaches.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030273 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergeValidationCachesEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030274 }
30275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30276
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030277 VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const
30278 {
30279 return static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), pInfoSize, pInfo ) );
30280 }
30281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30282 template <typename Allocator>
30283 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType ) const
30284 {
30285 std::vector<uint8_t,Allocator> info;
30286 size_t infoSize;
30287 Result result;
30288 do
30289 {
30290 result = static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, nullptr ) );
30291 if ( ( result == Result::eSuccess ) && infoSize )
30292 {
30293 info.resize( infoSize );
30294 result = static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, reinterpret_cast<void*>( info.data() ) ) );
30295 }
30296 } while ( result == Result::eIncomplete );
30297 assert( infoSize <= info.size() );
30298 info.resize( infoSize );
30299 return createResultValue( result, info, "VULKAN_HPP_NAMESPACE::Device::getShaderInfoAMD" );
30300 }
30301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30302
Mark Lobodzinski417d5702017-11-27 12:00:45 -070030303 VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const
30304 {
30305 return static_cast<Result>( vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( pMemoryHostPointerProperties ) ) );
30306 }
30307#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30308 VULKAN_HPP_INLINE ResultValueType<MemoryHostPointerPropertiesEXT>::type Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer ) const
30309 {
30310 MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
30311 Result result = static_cast<Result>( vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( &memoryHostPointerProperties ) ) );
30312 return createResultValue( result, memoryHostPointerProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryHostPointerPropertiesEXT" );
30313 }
30314#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30315
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030316#ifndef VULKAN_HPP_NO_SMART_HANDLE
30317 class DeviceDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070030318 template <> class UniqueHandleTraits<Device> {public: using deleter = DeviceDeleter; };
30319 using UniqueDevice = UniqueHandle<Device>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030320#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30321
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030322 class PhysicalDevice
30323 {
30324 public:
30325 PhysicalDevice()
30326 : m_physicalDevice(VK_NULL_HANDLE)
30327 {}
30328
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070030329 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030330 : m_physicalDevice(VK_NULL_HANDLE)
30331 {}
30332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030333 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070030334 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030335 {}
30336
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030337#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030338 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030339 {
30340 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030341 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030342 }
30343#endif
30344
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030345 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030346 {
30347 m_physicalDevice = VK_NULL_HANDLE;
30348 return *this;
30349 }
30350
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030351 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030352 {
30353 return m_physicalDevice == rhs.m_physicalDevice;
30354 }
30355
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030356 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030357 {
30358 return m_physicalDevice != rhs.m_physicalDevice;
30359 }
30360
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030361 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030362 {
30363 return m_physicalDevice < rhs.m_physicalDevice;
30364 }
30365
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030366 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030368 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30370
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030371 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030373 template <typename Allocator = std::allocator<QueueFamilyProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030374 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30376
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030377 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030378#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030379 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30381
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030382 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030384 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30386
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030387 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030389 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30391
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030392 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030394 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30396
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030397 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030398#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030399 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30400#ifndef VULKAN_HPP_NO_SMART_HANDLE
30401 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30402#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030403#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30404
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030405 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030407 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030408 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30410
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030411 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030413 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030414 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030415#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30416
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030417 void getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030418#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030419 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030420 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030421#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30422
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030423 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030424#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030425 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030426 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30428
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030429 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030431 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030432 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30434
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030435 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030436#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030437 template <typename Allocator = std::allocator<DisplayKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030438 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30440
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030441 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030443 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030444 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030445#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30446
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030447 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030448#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030449 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30451
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030452 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030453#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030454 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030455#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30456
30457#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030458 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
30459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30460 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
30461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030462#endif /*VK_USE_PLATFORM_MIR_KHR*/
30463
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030464 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030465#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030466 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30468
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030469 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030471 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030472#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30473
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030474 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030476 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030477 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30479
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030480 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030482 template <typename Allocator = std::allocator<PresentModeKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030483 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30485
30486#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030487 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
30488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30489 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
30490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030491#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30492
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030493#ifdef VK_USE_PLATFORM_WIN32_KHR
30494 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
30495#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30496
30497#ifdef VK_USE_PLATFORM_XLIB_KHR
30498 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030499#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030500 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
30501#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30502#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30503
30504#ifdef VK_USE_PLATFORM_XCB_KHR
30505 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
30506#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30507 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
30508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30509#endif /*VK_USE_PLATFORM_XCB_KHR*/
30510
30511 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
30512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30513 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
30514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30515
30516 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
30517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30518 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
30519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30520
30521 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
30522#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30523 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030524 template <typename ...T>
30525 StructureChain<T...> getFeatures2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30527
30528 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
30529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30530 PhysicalDeviceProperties2KHR getProperties2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030531 template <typename ...T>
30532 StructureChain<T...> getProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30534
30535 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
30536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30537 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
30538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30539
30540 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
30541#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30542 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030543 template <typename ...T>
30544 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030545#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30546
30547 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
30548#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30549 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030550 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30552
30553 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
30554#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30555 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
30556#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30557
30558 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
30559#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30560 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030561 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30563
Mark Youngabc2d6e2017-07-07 07:59:56 -060030564 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030566 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30568
Mark Youngabc2d6e2017-07-07 07:59:56 -060030569 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030570#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030571 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
30572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30573
30574 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
30575#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30576 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30578
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030579#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030580 Result releaseDisplayEXT( DisplayKHR display ) const;
30581#else
30582 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30584
30585#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030586 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030588 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030589#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070030590#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30591
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030592#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30593 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070030594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030595 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070030596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030597#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070030598
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030599 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070030600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030601 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070030602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30603
Mark Young0f183a82017-02-28 09:58:04 -070030604 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
30605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30606 template <typename Allocator = std::allocator<Rect2D>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030607 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30609
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030610 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const;
30611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30612 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const;
30613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30614
Mark Lobodzinski54385432017-05-15 10:27:52 -060030615 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
30616#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030617 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030618 template <typename ...T>
30619 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30621
30622 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
30623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30624 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030625 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030626#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30627
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030628
30629
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030630 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030631 {
30632 return m_physicalDevice;
30633 }
30634
30635 explicit operator bool() const
30636 {
30637 return m_physicalDevice != VK_NULL_HANDLE;
30638 }
30639
30640 bool operator!() const
30641 {
30642 return m_physicalDevice == VK_NULL_HANDLE;
30643 }
30644
30645 private:
30646 VkPhysicalDevice m_physicalDevice;
30647 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030648
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030649 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
30650
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030651#ifndef VULKAN_HPP_NO_SMART_HANDLE
30652 class DeviceDeleter
30653 {
30654 public:
30655 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
30656 : m_allocator( allocator )
30657 {}
30658
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070030659 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
30660
30661 protected:
30662 void destroy( Device device )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030663 {
30664 device.destroy( m_allocator );
30665 }
30666
30667 private:
30668 Optional<const AllocationCallbacks> m_allocator;
30669 };
30670#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30671
30672 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
30673 {
30674 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
30675 }
30676#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30677 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
30678 {
30679 PhysicalDeviceProperties properties;
30680 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
30681 return properties;
30682 }
30683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30684
30685 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
30686 {
30687 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
30688 }
30689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30690 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030691 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030692 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030693 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030694 uint32_t queueFamilyPropertyCount;
30695 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30696 queueFamilyProperties.resize( queueFamilyPropertyCount );
30697 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
30698 return queueFamilyProperties;
30699 }
30700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30701
30702 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
30703 {
30704 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
30705 }
30706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30707 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
30708 {
30709 PhysicalDeviceMemoryProperties memoryProperties;
30710 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
30711 return memoryProperties;
30712 }
30713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30714
30715 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
30716 {
30717 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
30718 }
30719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30720 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
30721 {
30722 PhysicalDeviceFeatures features;
30723 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
30724 return features;
30725 }
30726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30727
30728 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
30729 {
30730 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
30731 }
30732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30733 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
30734 {
30735 FormatProperties formatProperties;
30736 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
30737 return formatProperties;
30738 }
30739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30740
30741 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
30742 {
30743 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), reinterpret_cast<VkImageFormatProperties*>( pImageFormatProperties ) ) );
30744 }
30745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30746 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
30747 {
30748 ImageFormatProperties imageFormatProperties;
30749 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), reinterpret_cast<VkImageFormatProperties*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030750 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030751 }
30752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30753
30754 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
30755 {
30756 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
30757 }
30758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30759 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30760 {
30761 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030762 Result result = static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDevice*>( &device ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030763 return createResultValue( result, device, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDevice" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030764 }
30765#ifndef VULKAN_HPP_NO_SMART_HANDLE
30766 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30767 {
30768 DeviceDeleter deleter( allocator );
30769 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
30770 }
30771#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30773
30774 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
30775 {
30776 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
30777 }
30778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30779 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030780 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030781 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030782 std::vector<LayerProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030783 uint32_t propertyCount;
30784 Result result;
30785 do
30786 {
30787 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
30788 if ( ( result == Result::eSuccess ) && propertyCount )
30789 {
30790 properties.resize( propertyCount );
30791 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
30792 }
30793 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030794 assert( propertyCount <= properties.size() );
30795 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030796 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceLayerProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030797 }
30798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30799
30800 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
30801 {
30802 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
30803 }
30804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30805 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030806 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030807 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030808 std::vector<ExtensionProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030809 uint32_t propertyCount;
30810 Result result;
30811 do
30812 {
30813 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
30814 if ( ( result == Result::eSuccess ) && propertyCount )
30815 {
30816 properties.resize( propertyCount );
30817 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
30818 }
30819 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030820 assert( propertyCount <= properties.size() );
30821 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030822 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceExtensionProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030823 }
30824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30825
30826 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
30827 {
30828 vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkSampleCountFlagBits>( samples ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageTiling>( tiling ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties*>( pProperties ) );
30829 }
30830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30831 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030832 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030833 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030834 std::vector<SparseImageFormatProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030835 uint32_t propertyCount;
30836 vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkSampleCountFlagBits>( samples ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageTiling>( tiling ), &propertyCount, nullptr );
30837 properties.resize( propertyCount );
30838 vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkSampleCountFlagBits>( samples ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageTiling>( tiling ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties*>( properties.data() ) );
30839 return properties;
30840 }
30841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30842
30843 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
30844 {
30845 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
30846 }
30847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30848 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030849 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030850 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030851 std::vector<DisplayPropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030852 uint32_t propertyCount;
30853 Result result;
30854 do
30855 {
30856 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30857 if ( ( result == Result::eSuccess ) && propertyCount )
30858 {
30859 properties.resize( propertyCount );
30860 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
30861 }
30862 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030863 assert( propertyCount <= properties.size() );
30864 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030865 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030866 }
30867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30868
30869 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
30870 {
30871 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
30872 }
30873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30874 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030875 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030876 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030877 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030878 uint32_t propertyCount;
30879 Result result;
30880 do
30881 {
30882 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30883 if ( ( result == Result::eSuccess ) && propertyCount )
30884 {
30885 properties.resize( propertyCount );
30886 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
30887 }
30888 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030889 assert( propertyCount <= properties.size() );
30890 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030891 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlanePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030892 }
30893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30894
30895 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
30896 {
30897 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
30898 }
30899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30900 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030901 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030902 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030903 std::vector<DisplayKHR,Allocator> displays;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030904 uint32_t displayCount;
30905 Result result;
30906 do
30907 {
30908 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
30909 if ( ( result == Result::eSuccess ) && displayCount )
30910 {
30911 displays.resize( displayCount );
30912 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
30913 }
30914 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030915 assert( displayCount <= displays.size() );
30916 displays.resize( displayCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030917 return createResultValue( result, displays, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030918 }
30919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30920
30921 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
30922 {
30923 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
30924 }
30925#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30926 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030927 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030928 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030929 std::vector<DisplayModePropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030930 uint32_t propertyCount;
30931 Result result;
30932 do
30933 {
30934 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
30935 if ( ( result == Result::eSuccess ) && propertyCount )
30936 {
30937 properties.resize( propertyCount );
30938 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
30939 }
30940 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030941 assert( propertyCount <= properties.size() );
30942 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030943 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayModePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030944 }
30945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30946
30947 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
30948 {
30949 return static_cast<Result>( vkCreateDisplayModeKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDisplayModeKHR*>( pMode ) ) );
30950 }
30951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30952 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30953 {
30954 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030955 Result result = static_cast<Result>( vkCreateDisplayModeKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDisplayModeKHR*>( &mode ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030956 return createResultValue( result, mode, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDisplayModeKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030957 }
30958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30959
30960 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
30961 {
30962 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
30963 }
30964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30965 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
30966 {
30967 DisplayPlaneCapabilitiesKHR capabilities;
30968 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030969 return createResultValue( result, capabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030970 }
30971#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30972
30973#ifdef VK_USE_PLATFORM_MIR_KHR
30974 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
30975 {
30976 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
30977 }
30978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30979 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
30980 {
30981 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
30982 }
30983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30984#endif /*VK_USE_PLATFORM_MIR_KHR*/
30985
30986 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
30987 {
30988 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
30989 }
30990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30991 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
30992 {
30993 Bool32 supported;
30994 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030995 return createResultValue( result, supported, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceSupportKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030996 }
30997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30998
30999 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
31000 {
31001 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
31002 }
31003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31004 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
31005 {
31006 SurfaceCapabilitiesKHR surfaceCapabilities;
31007 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031008 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031009 }
31010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31011
31012 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
31013 {
31014 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
31015 }
31016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31017 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031018 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031019 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031020 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031021 uint32_t surfaceFormatCount;
31022 Result result;
31023 do
31024 {
31025 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
31026 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31027 {
31028 surfaceFormats.resize( surfaceFormatCount );
31029 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
31030 }
31031 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031032 assert( surfaceFormatCount <= surfaceFormats.size() );
31033 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031034 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormatsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031035 }
31036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31037
31038 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
31039 {
31040 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
31041 }
31042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31043 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031044 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031045 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031046 std::vector<PresentModeKHR,Allocator> presentModes;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031047 uint32_t presentModeCount;
31048 Result result;
31049 do
31050 {
31051 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
31052 if ( ( result == Result::eSuccess ) && presentModeCount )
31053 {
31054 presentModes.resize( presentModeCount );
31055 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
31056 }
31057 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031058 assert( presentModeCount <= presentModes.size() );
31059 presentModes.resize( presentModeCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031060 return createResultValue( result, presentModes, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfacePresentModesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031061 }
31062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31063
31064#ifdef VK_USE_PLATFORM_WAYLAND_KHR
31065 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
31066 {
31067 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
31068 }
31069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31070 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
31071 {
31072 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
31073 }
31074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31075#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31076
31077#ifdef VK_USE_PLATFORM_WIN32_KHR
31078 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
31079 {
31080 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
31081 }
31082#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31083
31084#ifdef VK_USE_PLATFORM_XLIB_KHR
31085 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
31086 {
31087 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
31088 }
31089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31090 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
31091 {
31092 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
31093 }
31094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31095#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31096
31097#ifdef VK_USE_PLATFORM_XCB_KHR
31098 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
31099 {
31100 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
31101 }
31102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31103 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
31104 {
31105 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
31106 }
31107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31108#endif /*VK_USE_PLATFORM_XCB_KHR*/
31109
31110 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
31111 {
31112 return static_cast<Result>( vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ), reinterpret_cast<VkExternalImageFormatPropertiesNV*>( pExternalImageFormatProperties ) ) );
31113 }
31114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31115 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
31116 {
31117 ExternalImageFormatPropertiesNV externalImageFormatProperties;
31118 Result result = static_cast<Result>( vkGetPhysicalDeviceExternalImageFormatPropertiesNV( m_physicalDevice, static_cast<VkFormat>( format ), static_cast<VkImageType>( type ), static_cast<VkImageTiling>( tiling ), static_cast<VkImageUsageFlags>( usage ), static_cast<VkImageCreateFlags>( flags ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( externalHandleType ), reinterpret_cast<VkExternalImageFormatPropertiesNV*>( &externalImageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031119 return createResultValue( result, externalImageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getExternalImageFormatPropertiesNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031120 }
31121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31122
31123 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
31124 {
31125 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
31126 }
31127#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31128 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
31129 {
31130 DeviceGeneratedCommandsLimitsNVX limits;
31131 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
31132 return limits;
31133 }
31134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31135
31136 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
31137 {
31138 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
31139 }
31140#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31141 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
31142 {
31143 PhysicalDeviceFeatures2KHR features;
31144 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
31145 return features;
31146 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031147 template <typename ...T>
31148 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR() const
31149 {
31150 StructureChain<T...> structureChain;
31151 PhysicalDeviceFeatures2KHR& features = structureChain.template get<PhysicalDeviceFeatures2KHR>();
31152 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
31153 return structureChain;
31154 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31156
31157 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
31158 {
31159 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
31160 }
31161#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31162 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
31163 {
31164 PhysicalDeviceProperties2KHR properties;
31165 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
31166 return properties;
31167 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031168 template <typename ...T>
31169 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR() const
31170 {
31171 StructureChain<T...> structureChain;
31172 PhysicalDeviceProperties2KHR& properties = structureChain.template get<PhysicalDeviceProperties2KHR>();
31173 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
31174 return structureChain;
31175 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31177
31178 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
31179 {
31180 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
31181 }
31182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31183 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
31184 {
31185 FormatProperties2KHR formatProperties;
31186 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
31187 return formatProperties;
31188 }
31189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31190
31191 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
31192 {
31193 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
31194 }
31195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31196 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
31197 {
31198 ImageFormatProperties2KHR imageFormatProperties;
31199 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031200 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031201 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031202 template <typename ...T>
31203 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
31204 {
31205 StructureChain<T...> structureChain;
31206 ImageFormatProperties2KHR& imageFormatProperties = structureChain.template get<ImageFormatProperties2KHR>();
31207 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031208 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031209 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31211
31212 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
31213 {
31214 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
31215 }
31216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31217 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031218 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031219 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031220 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031221 uint32_t queueFamilyPropertyCount;
31222 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
31223 queueFamilyProperties.resize( queueFamilyPropertyCount );
31224 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
31225 return queueFamilyProperties;
31226 }
31227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31228
31229 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
31230 {
31231 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
31232 }
31233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31234 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
31235 {
31236 PhysicalDeviceMemoryProperties2KHR memoryProperties;
31237 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
31238 return memoryProperties;
31239 }
31240#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31241
31242 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
31243 {
31244 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
31245 }
31246#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31247 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031248 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031249 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031250 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031251 uint32_t propertyCount;
31252 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
31253 properties.resize( propertyCount );
31254 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
31255 return properties;
31256 }
31257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31258
Mark Youngabc2d6e2017-07-07 07:59:56 -060031259 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070031260 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031261 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031262 }
31263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060031264 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070031265 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031266 ExternalBufferPropertiesKHR externalBufferProperties;
31267 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031268 return externalBufferProperties;
31269 }
31270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31271
Mark Youngabc2d6e2017-07-07 07:59:56 -060031272 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070031273 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031274 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031275 }
31276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060031277 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070031278 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031279 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
31280 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031281 return externalSemaphoreProperties;
31282 }
31283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31284
Mark Youngabc2d6e2017-07-07 07:59:56 -060031285 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
31286 {
31287 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
31288 }
31289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31290 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
31291 {
31292 ExternalFencePropertiesKHR externalFenceProperties;
31293 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
31294 return externalFenceProperties;
31295 }
31296#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31297
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031298#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
31299 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
31300 {
31301 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
31302 }
31303#else
31304 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
31305 {
31306 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031307 return createResultValue( result, "VULKAN_HPP_NAMESPACE::PhysicalDevice::releaseDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031308 }
31309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31310
31311#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
31312 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
31313 {
31314 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
31315 }
31316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31317 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
31318 {
31319 Display dpy;
31320 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031321 return createResultValue( result, dpy, "VULKAN_HPP_NAMESPACE::PhysicalDevice::acquireXlibDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031322 }
31323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31324#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
31325
31326#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
31327 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
31328 {
31329 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
31330 }
31331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31332 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
31333 {
31334 DisplayKHR display;
31335 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031336 return createResultValue( result, display, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getRandROutputDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031337 }
31338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31339#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
31340
31341 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
31342 {
31343 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
31344 }
31345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31346 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
31347 {
31348 SurfaceCapabilities2EXT surfaceCapabilities;
31349 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031350 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2EXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031351 }
31352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070031353
31354 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
31355 {
31356 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
31357 }
31358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31359 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031360 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
Mark Young0f183a82017-02-28 09:58:04 -070031361 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031362 std::vector<Rect2D,Allocator> rects;
Mark Young0f183a82017-02-28 09:58:04 -070031363 uint32_t rectCount;
31364 Result result;
31365 do
31366 {
31367 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
31368 if ( ( result == Result::eSuccess ) && rectCount )
31369 {
31370 rects.resize( rectCount );
31371 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
31372 }
31373 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031374 assert( rectCount <= rects.size() );
31375 rects.resize( rectCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031376 return createResultValue( result, rects, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getPresentRectanglesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070031377 }
31378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031379
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031380 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const
31381 {
31382 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
31383 }
31384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31385 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const
31386 {
31387 MultisamplePropertiesEXT multisampleProperties;
31388 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
31389 return multisampleProperties;
31390 }
31391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31392
Mark Lobodzinski54385432017-05-15 10:27:52 -060031393 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
31394 {
31395 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
31396 }
31397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031398 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031399 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031400 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031401 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031402 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031403 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031404 template <typename ...T>
31405 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
31406 {
31407 StructureChain<T...> structureChain;
31408 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
31409 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031410 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031411 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060031412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31413
31414 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
31415 {
31416 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
31417 }
31418#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31419 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031420 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031421 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031422 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031423 uint32_t surfaceFormatCount;
31424 Result result;
31425 do
31426 {
31427 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
31428 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31429 {
31430 surfaceFormats.resize( surfaceFormatCount );
31431 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
31432 }
31433 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031434 assert( surfaceFormatCount <= surfaceFormats.size() );
31435 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031436 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormats2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031437 }
31438#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31439
Mark Young0f183a82017-02-28 09:58:04 -070031440 struct CmdProcessCommandsInfoNVX
31441 {
31442 CmdProcessCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t indirectCommandsTokenCount_ = 0, const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ = nullptr, uint32_t maxSequencesCount_ = 0, CommandBuffer targetCommandBuffer_ = CommandBuffer(), Buffer sequencesCountBuffer_ = Buffer(), DeviceSize sequencesCountOffset_ = 0, Buffer sequencesIndexBuffer_ = Buffer(), DeviceSize sequencesIndexOffset_ = 0 )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031443 : objectTable( objectTable_ )
Mark Young0f183a82017-02-28 09:58:04 -070031444 , indirectCommandsLayout( indirectCommandsLayout_ )
31445 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
31446 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
31447 , maxSequencesCount( maxSequencesCount_ )
31448 , targetCommandBuffer( targetCommandBuffer_ )
31449 , sequencesCountBuffer( sequencesCountBuffer_ )
31450 , sequencesCountOffset( sequencesCountOffset_ )
31451 , sequencesIndexBuffer( sequencesIndexBuffer_ )
31452 , sequencesIndexOffset( sequencesIndexOffset_ )
31453 {
31454 }
31455
31456 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
31457 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031458 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031459 }
31460
31461 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
31462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031463 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031464 return *this;
31465 }
Mark Young0f183a82017-02-28 09:58:04 -070031466 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
31467 {
31468 pNext = pNext_;
31469 return *this;
31470 }
31471
31472 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
31473 {
31474 objectTable = objectTable_;
31475 return *this;
31476 }
31477
31478 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
31479 {
31480 indirectCommandsLayout = indirectCommandsLayout_;
31481 return *this;
31482 }
31483
31484 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
31485 {
31486 indirectCommandsTokenCount = indirectCommandsTokenCount_;
31487 return *this;
31488 }
31489
31490 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
31491 {
31492 pIndirectCommandsTokens = pIndirectCommandsTokens_;
31493 return *this;
31494 }
31495
31496 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
31497 {
31498 maxSequencesCount = maxSequencesCount_;
31499 return *this;
31500 }
31501
31502 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
31503 {
31504 targetCommandBuffer = targetCommandBuffer_;
31505 return *this;
31506 }
31507
31508 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
31509 {
31510 sequencesCountBuffer = sequencesCountBuffer_;
31511 return *this;
31512 }
31513
31514 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
31515 {
31516 sequencesCountOffset = sequencesCountOffset_;
31517 return *this;
31518 }
31519
31520 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
31521 {
31522 sequencesIndexBuffer = sequencesIndexBuffer_;
31523 return *this;
31524 }
31525
31526 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
31527 {
31528 sequencesIndexOffset = sequencesIndexOffset_;
31529 return *this;
31530 }
31531
31532 operator const VkCmdProcessCommandsInfoNVX&() const
31533 {
31534 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
31535 }
31536
31537 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
31538 {
31539 return ( sType == rhs.sType )
31540 && ( pNext == rhs.pNext )
31541 && ( objectTable == rhs.objectTable )
31542 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
31543 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
31544 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
31545 && ( maxSequencesCount == rhs.maxSequencesCount )
31546 && ( targetCommandBuffer == rhs.targetCommandBuffer )
31547 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
31548 && ( sequencesCountOffset == rhs.sequencesCountOffset )
31549 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
31550 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
31551 }
31552
31553 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
31554 {
31555 return !operator==( rhs );
31556 }
31557
31558 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031559 StructureType sType = StructureType::eCmdProcessCommandsInfoNVX;
Mark Young0f183a82017-02-28 09:58:04 -070031560
31561 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031562 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070031563 ObjectTableNVX objectTable;
31564 IndirectCommandsLayoutNVX indirectCommandsLayout;
31565 uint32_t indirectCommandsTokenCount;
31566 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
31567 uint32_t maxSequencesCount;
31568 CommandBuffer targetCommandBuffer;
31569 Buffer sequencesCountBuffer;
31570 DeviceSize sequencesCountOffset;
31571 Buffer sequencesIndexBuffer;
31572 DeviceSize sequencesIndexOffset;
31573 };
31574 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
31575
31576 struct PhysicalDeviceGroupPropertiesKHX
31577 {
31578 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
31579 {
31580 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
31581 }
31582
31583 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31584 {
31585 return ( sType == rhs.sType )
31586 && ( pNext == rhs.pNext )
31587 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31588 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
31589 && ( subsetAllocation == rhs.subsetAllocation );
31590 }
31591
31592 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31593 {
31594 return !operator==( rhs );
31595 }
31596
31597 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031598 StructureType sType = StructureType::ePhysicalDeviceGroupPropertiesKHX;
Mark Young0f183a82017-02-28 09:58:04 -070031599
31600 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031601 void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070031602 uint32_t physicalDeviceCount;
31603 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
31604 Bool32 subsetAllocation;
31605 };
31606 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
31607
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031608#ifndef VULKAN_HPP_NO_SMART_HANDLE
31609 class DebugReportCallbackEXTDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031610 template <> class UniqueHandleTraits<DebugReportCallbackEXT> {public: using deleter = DebugReportCallbackEXTDeleter; };
31611 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031612 class SurfaceKHRDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031613 template <> class UniqueHandleTraits<SurfaceKHR> {public: using deleter = SurfaceKHRDeleter; };
31614 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031615#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31616
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031617 class Instance
31618 {
31619 public:
31620 Instance()
31621 : m_instance(VK_NULL_HANDLE)
31622 {}
31623
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070031624 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031625 : m_instance(VK_NULL_HANDLE)
31626 {}
31627
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031628 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031629 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031630 {}
31631
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031632#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031633 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031634 {
31635 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031636 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031637 }
31638#endif
31639
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031640 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031641 {
31642 m_instance = VK_NULL_HANDLE;
31643 return *this;
31644 }
31645
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031646 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031647 {
31648 return m_instance == rhs.m_instance;
31649 }
31650
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031651 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031652 {
31653 return m_instance != rhs.m_instance;
31654 }
31655
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031656 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031657 {
31658 return m_instance < rhs.m_instance;
31659 }
31660
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031661 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031662#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031663 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031664#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31665
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031666 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031667#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031668 template <typename Allocator = std::allocator<PhysicalDevice>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031669 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31671
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031672 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031673#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031674 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31676
31677#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031678 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031679#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031680 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31681#ifndef VULKAN_HPP_NO_SMART_HANDLE
31682 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31683#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031685#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031686
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031687 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031688#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031689 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31690#ifndef VULKAN_HPP_NO_SMART_HANDLE
31691 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31692#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31694
31695#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031696 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031697#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031698 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31699#ifndef VULKAN_HPP_NO_SMART_HANDLE
31700 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31701#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031703#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031704
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031705 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031707 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031708#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31709
Mark Young39389872017-01-19 21:10:49 -070031710#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031711 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31713 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31714#ifndef VULKAN_HPP_NO_SMART_HANDLE
31715 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31716#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070031718#endif /*VK_USE_PLATFORM_VI_NN*/
31719
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031720#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031721 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31723 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31724#ifndef VULKAN_HPP_NO_SMART_HANDLE
31725 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31726#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031728#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31729
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031730#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031731 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31733 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31734#ifndef VULKAN_HPP_NO_SMART_HANDLE
31735 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31736#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31737#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031738#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31739
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031740#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031741 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31742#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31743 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31744#ifndef VULKAN_HPP_NO_SMART_HANDLE
31745 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31746#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31747#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031748#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31749
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031750#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031751 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31752#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31753 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31754#ifndef VULKAN_HPP_NO_SMART_HANDLE
31755 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31756#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031758#endif /*VK_USE_PLATFORM_XCB_KHR*/
31759
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031760 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031762 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31763#ifndef VULKAN_HPP_NO_SMART_HANDLE
31764 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31765#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031766#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31767
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031768 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031769#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031770 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031771#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31772
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031773 void debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031775 void debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031776#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31777
Mark Young0f183a82017-02-28 09:58:04 -070031778 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
31779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31780 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031781 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
Mark Young0f183a82017-02-28 09:58:04 -070031782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31783
31784#ifdef VK_USE_PLATFORM_IOS_MVK
31785 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31787 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31788#ifndef VULKAN_HPP_NO_SMART_HANDLE
31789 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31790#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31791#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31792#endif /*VK_USE_PLATFORM_IOS_MVK*/
31793
31794#ifdef VK_USE_PLATFORM_MACOS_MVK
31795 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31797 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31798#ifndef VULKAN_HPP_NO_SMART_HANDLE
31799 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31800#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31802#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31803
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031804
31805
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031806 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031807 {
31808 return m_instance;
31809 }
31810
31811 explicit operator bool() const
31812 {
31813 return m_instance != VK_NULL_HANDLE;
31814 }
31815
31816 bool operator!() const
31817 {
31818 return m_instance == VK_NULL_HANDLE;
31819 }
31820
31821 private:
31822 VkInstance m_instance;
31823 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031824
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031825 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
31826
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031827#ifndef VULKAN_HPP_NO_SMART_HANDLE
31828 class DebugReportCallbackEXTDeleter
31829 {
31830 public:
31831 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31832 : m_instance( instance )
31833 , m_allocator( allocator )
31834 {}
31835
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031836 Instance getInstance() const { return m_instance; }
31837 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
31838
31839 protected:
31840 void destroy( DebugReportCallbackEXT debugReportCallbackEXT )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031841 {
31842 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
31843 }
31844
31845 private:
31846 Instance m_instance;
31847 Optional<const AllocationCallbacks> m_allocator;
31848 };
31849
31850 class SurfaceKHRDeleter
31851 {
31852 public:
31853 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31854 : m_instance( instance )
31855 , m_allocator( allocator )
31856 {}
31857
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070031858 Instance getInstance() const { return m_instance; }
31859 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
31860
31861 protected:
31862 void destroy( SurfaceKHR surfaceKHR )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031863 {
31864 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
31865 }
31866
31867 private:
31868 Instance m_instance;
31869 Optional<const AllocationCallbacks> m_allocator;
31870 };
31871#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31872
31873 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
31874 {
31875 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31876 }
31877#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31878 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
31879 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031880 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031881 }
31882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31883
31884 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
31885 {
31886 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
31887 }
31888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31889 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031890 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031891 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031892 std::vector<PhysicalDevice,Allocator> physicalDevices;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031893 uint32_t physicalDeviceCount;
31894 Result result;
31895 do
31896 {
31897 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
31898 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
31899 {
31900 physicalDevices.resize( physicalDeviceCount );
31901 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
31902 }
31903 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031904 assert( physicalDeviceCount <= physicalDevices.size() );
31905 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031906 return createResultValue( result, physicalDevices, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDevices" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031907 }
31908#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31909
31910 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
31911 {
31912 return vkGetInstanceProcAddr( m_instance, pName );
31913 }
31914#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31915 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
31916 {
31917 return vkGetInstanceProcAddr( m_instance, name.c_str() );
31918 }
31919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31920
31921#ifdef VK_USE_PLATFORM_ANDROID_KHR
31922 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31923 {
31924 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31925 }
31926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31927 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31928 {
31929 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031930 Result result = static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031931 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createAndroidSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031932 }
31933#ifndef VULKAN_HPP_NO_SMART_HANDLE
31934 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31935 {
31936 SurfaceKHRDeleter deleter( *this, allocator );
31937 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
31938 }
31939#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31941#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31942
31943 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31944 {
31945 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31946 }
31947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31948 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31949 {
31950 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031951 Result result = static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031952 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createDisplayPlaneSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031953 }
31954#ifndef VULKAN_HPP_NO_SMART_HANDLE
31955 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31956 {
31957 SurfaceKHRDeleter deleter( *this, allocator );
31958 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
31959 }
31960#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31962
31963#ifdef VK_USE_PLATFORM_MIR_KHR
31964 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31965 {
31966 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31967 }
31968#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31969 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31970 {
31971 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031972 Result result = static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031973 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMirSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031974 }
31975#ifndef VULKAN_HPP_NO_SMART_HANDLE
31976 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31977 {
31978 SurfaceKHRDeleter deleter( *this, allocator );
31979 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
31980 }
31981#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31983#endif /*VK_USE_PLATFORM_MIR_KHR*/
31984
31985 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
31986 {
31987 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31988 }
31989#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31990 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
31991 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031992 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031993 }
31994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31995
31996#ifdef VK_USE_PLATFORM_VI_NN
31997 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31998 {
31999 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32000 }
32001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32002 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
32003 {
32004 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032005 Result result = static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032006 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createViSurfaceNN" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032007 }
32008#ifndef VULKAN_HPP_NO_SMART_HANDLE
32009 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
32010 {
32011 SurfaceKHRDeleter deleter( *this, allocator );
32012 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
32013 }
32014#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32016#endif /*VK_USE_PLATFORM_VI_NN*/
32017
32018#ifdef VK_USE_PLATFORM_WAYLAND_KHR
32019 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32020 {
32021 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32022 }
32023#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32024 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32025 {
32026 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032027 Result result = static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032028 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWaylandSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032029 }
32030#ifndef VULKAN_HPP_NO_SMART_HANDLE
32031 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32032 {
32033 SurfaceKHRDeleter deleter( *this, allocator );
32034 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
32035 }
32036#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32038#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32039
32040#ifdef VK_USE_PLATFORM_WIN32_KHR
32041 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32042 {
32043 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32044 }
32045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32046 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32047 {
32048 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032049 Result result = static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032050 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWin32SurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032051 }
32052#ifndef VULKAN_HPP_NO_SMART_HANDLE
32053 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32054 {
32055 SurfaceKHRDeleter deleter( *this, allocator );
32056 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
32057 }
32058#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32060#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32061
32062#ifdef VK_USE_PLATFORM_XLIB_KHR
32063 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32064 {
32065 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32066 }
32067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32068 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32069 {
32070 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032071 Result result = static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032072 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXlibSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032073 }
32074#ifndef VULKAN_HPP_NO_SMART_HANDLE
32075 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32076 {
32077 SurfaceKHRDeleter deleter( *this, allocator );
32078 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
32079 }
32080#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32082#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32083
32084#ifdef VK_USE_PLATFORM_XCB_KHR
32085 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32086 {
32087 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32088 }
32089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32090 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32091 {
32092 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032093 Result result = static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032094 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXcbSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032095 }
32096#ifndef VULKAN_HPP_NO_SMART_HANDLE
32097 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32098 {
32099 SurfaceKHRDeleter deleter( *this, allocator );
32100 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
32101 }
32102#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32104#endif /*VK_USE_PLATFORM_XCB_KHR*/
32105
32106 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
32107 {
32108 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
32109 }
32110#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32111 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
32112 {
32113 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032114 Result result = static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugReportCallbackEXT*>( &callback ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032115 return createResultValue( result, callback, "VULKAN_HPP_NAMESPACE::Instance::createDebugReportCallbackEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032116 }
32117#ifndef VULKAN_HPP_NO_SMART_HANDLE
32118 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
32119 {
32120 DebugReportCallbackEXTDeleter deleter( *this, allocator );
32121 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
32122 }
32123#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32125
32126 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
32127 {
32128 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
32129 }
32130#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32131 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
32132 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032133 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032134 }
32135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32136
32137 VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const
32138 {
32139 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
32140 }
32141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32142 VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( DebugReportFlagsEXT flags, DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message ) const
32143 {
32144#ifdef VULKAN_HPP_NO_EXCEPTIONS
32145 assert( layerPrefix.size() == message.size() );
32146#else
32147 if ( layerPrefix.size() != message.size() )
32148 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032149 throw LogicError( "VULKAN_HPP_NAMESPACE::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032150 }
32151#endif // VULKAN_HPP_NO_EXCEPTIONS
32152 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
32153 }
32154#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070032155
32156 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032157 {
Mark Young0f183a82017-02-28 09:58:04 -070032158 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
32159 }
32160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32161 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060032162 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
Mark Young0f183a82017-02-28 09:58:04 -070032163 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060032164 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
Mark Young0f183a82017-02-28 09:58:04 -070032165 uint32_t physicalDeviceGroupCount;
32166 Result result;
32167 do
32168 {
32169 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
32170 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
32171 {
32172 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
32173 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
32174 }
32175 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032176 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
32177 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032178 return createResultValue( result, physicalDeviceGroupProperties, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDeviceGroupsKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070032179 }
32180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32181
32182#ifdef VK_USE_PLATFORM_IOS_MVK
32183 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32184 {
32185 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32186 }
32187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32188 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32189 {
32190 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032191 Result result = static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032192 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createIOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070032193 }
32194#ifndef VULKAN_HPP_NO_SMART_HANDLE
32195 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32196 {
32197 SurfaceKHRDeleter deleter( *this, allocator );
32198 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
32199 }
32200#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32202#endif /*VK_USE_PLATFORM_IOS_MVK*/
32203
32204#ifdef VK_USE_PLATFORM_MACOS_MVK
32205 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32206 {
32207 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32208 }
32209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32210 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32211 {
32212 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032213 Result result = static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032214 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMacOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070032215 }
32216#ifndef VULKAN_HPP_NO_SMART_HANDLE
32217 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32218 {
32219 SurfaceKHRDeleter deleter( *this, allocator );
32220 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
32221 }
32222#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32223#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32224#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032225
Mark Young0f183a82017-02-28 09:58:04 -070032226 struct DeviceGroupDeviceCreateInfoKHX
32227 {
32228 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032229 : physicalDeviceCount( physicalDeviceCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070032230 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032231 {
32232 }
32233
Mark Young0f183a82017-02-28 09:58:04 -070032234 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060032235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032236 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060032237 }
32238
Mark Young0f183a82017-02-28 09:58:04 -070032239 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060032240 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032241 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060032242 return *this;
32243 }
Mark Young0f183a82017-02-28 09:58:04 -070032244 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032245 {
32246 pNext = pNext_;
32247 return *this;
32248 }
32249
Mark Young0f183a82017-02-28 09:58:04 -070032250 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032251 {
Mark Young0f183a82017-02-28 09:58:04 -070032252 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060032253 return *this;
32254 }
32255
Mark Young0f183a82017-02-28 09:58:04 -070032256 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032257 {
Mark Young0f183a82017-02-28 09:58:04 -070032258 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060032259 return *this;
32260 }
32261
Mark Young0f183a82017-02-28 09:58:04 -070032262 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060032263 {
Mark Young0f183a82017-02-28 09:58:04 -070032264 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060032265 }
32266
Mark Young0f183a82017-02-28 09:58:04 -070032267 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032268 {
32269 return ( sType == rhs.sType )
32270 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070032271 && ( physicalDeviceCount == rhs.physicalDeviceCount )
32272 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060032273 }
32274
Mark Young0f183a82017-02-28 09:58:04 -070032275 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032276 {
32277 return !operator==( rhs );
32278 }
32279
32280 private:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032281 StructureType sType = StructureType::eDeviceGroupDeviceCreateInfoKHX;
Lenny Komow68432d72016-09-29 14:16:59 -060032282
32283 public:
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032284 const void* pNext = nullptr;
Mark Young0f183a82017-02-28 09:58:04 -070032285 uint32_t physicalDeviceCount;
32286 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060032287 };
Mark Young0f183a82017-02-28 09:58:04 -070032288 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060032289
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032290#ifndef VULKAN_HPP_NO_SMART_HANDLE
32291 class InstanceDeleter;
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032292 template <> class UniqueHandleTraits<Instance> {public: using deleter = InstanceDeleter; };
32293 using UniqueInstance = UniqueHandle<Instance>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032294#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32295
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032296 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032298 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032299#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032300 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032301#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32303
32304#ifndef VULKAN_HPP_NO_SMART_HANDLE
32305 class InstanceDeleter
32306 {
32307 public:
32308 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
32309 : m_allocator( allocator )
32310 {}
32311
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032312 Optional<const AllocationCallbacks> getAllocator() const { return m_allocator; }
32313
32314 protected:
32315 void destroy( Instance instance )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032316 {
32317 instance.destroy( m_allocator );
32318 }
32319
32320 private:
32321 Optional<const AllocationCallbacks> m_allocator;
32322 };
32323#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32324
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032325 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032326 {
32327 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
32328 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032330 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032331 {
32332 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032333 Result result = static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032334 return createResultValue( result, instance, "VULKAN_HPP_NAMESPACE::createInstance" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032335 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032336#ifndef VULKAN_HPP_NO_SMART_HANDLE
32337 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
32338 {
32339 InstanceDeleter deleter( allocator );
32340 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
32341 }
32342#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32344
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032345
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032346 template <> struct isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>{ enum { value = true }; };
32347 template <> struct isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>{ enum { value = true }; };
32348 template <> struct isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>{ enum { value = true }; };
32349 template <> struct isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032350#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032351 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032352#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32353#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032354 template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032355#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032356 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2KHR>{ enum { value = true }; };
32357 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePushDescriptorPropertiesKHR>{ enum { value = true }; };
32358 template <> struct isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>{ enum { value = true }; };
32359 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceVariablePointerFeaturesKHR>{ enum { value = true }; };
32360 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeaturesKHR>{ enum { value = true }; };
32361 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceIDPropertiesKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032362#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032363 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032364#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32365#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032366 template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032367#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32368#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032369 template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032370#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32371#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032372 template <> struct isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032373#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32374#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032375 template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032376#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032377 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceMultiviewFeaturesKHX>{ enum { value = true }; };
32378 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeaturesKHX>{ enum { value = true }; };
32379 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPropertiesKHX>{ enum { value = true }; };
32380 template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfoKHX>{ enum { value = true }; };
32381 template <> struct isStructureChainValid<BindBufferMemoryInfoKHR, BindBufferMemoryDeviceGroupInfoKHX>{ enum { value = true }; };
32382 template <> struct isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemoryDeviceGroupInfoKHX>{ enum { value = true }; };
32383 template <> struct isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfoKHX>{ enum { value = true }; };
32384 template <> struct isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfoKHX>{ enum { value = true }; };
32385 template <> struct isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfoKHX>{ enum { value = true }; };
32386 template <> struct isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfoKHX>{ enum { value = true }; };
32387 template <> struct isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHX>{ enum { value = true }; };
32388 template <> struct isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemorySwapchainInfoKHX>{ enum { value = true }; };
32389 template <> struct isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>{ enum { value = true }; };
32390 template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>{ enum { value = true }; };
32391 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceDiscardRectanglePropertiesEXT>{ enum { value = true }; };
32392 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>{ enum { value = true }; };
32393 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDevice16BitStorageFeaturesKHR>{ enum { value = true }; };
32394 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeaturesKHR>{ enum { value = true }; };
32395 template <> struct isStructureChainValid<MemoryRequirements2KHR, MemoryDedicatedRequirementsKHR>{ enum { value = true }; };
32396 template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfoKHR>{ enum { value = true }; };
32397 template <> struct isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfoKHR>{ enum { value = true }; };
32398 template <> struct isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfoKHR>{ enum { value = true }; };
32399 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>{ enum { value = true }; };
32400 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>{ enum { value = true }; };
32401 template <> struct isStructureChainValid<ImageFormatProperties2KHR, SamplerYcbcrConversionImageFormatPropertiesKHR>{ enum { value = true }; };
32402 template <> struct isStructureChainValid<ImageFormatProperties2KHR, TextureLODGatherFormatPropertiesAMD>{ enum { value = true }; };
32403 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>{ enum { value = true }; };
32404 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>{ enum { value = true }; };
32405 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>{ enum { value = true }; };
32406 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>{ enum { value = true }; };
32407 template <> struct isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>{ enum { value = true }; };
32408 template <> struct isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>{ enum { value = true }; };
32409 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceExternalMemoryHostPropertiesEXT>{ enum { value = true }; };
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032410 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceConservativeRasterizationPropertiesEXT>{ enum { value = true }; };
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032411 template <> struct isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>{ enum { value = true }; };
32412 template <> struct isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfoKHR>{ enum { value = true }; };
32413 template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfoKHR>{ enum { value = true }; };
32414 template <> struct isStructureChainValid<BindImageMemoryInfoKHR, BindImagePlaneMemoryInfoKHR>{ enum { value = true }; };
32415 template <> struct isStructureChainValid<ImageMemoryRequirementsInfo2KHR, ImagePlaneMemoryRequirementsInfoKHR>{ enum { value = true }; };
32416 template <> struct isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>{ enum { value = true }; };
32417 template <> struct isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>{ enum { value = true }; };
32418 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>{ enum { value = true }; };
32419 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSampleLocationsPropertiesEXT>{ enum { value = true }; };
32420 template <> struct isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>{ enum { value = true }; };
32421 template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>{ enum { value = true }; };
32422 template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>{ enum { value = true }; };
32423 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032424#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032425 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032426#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032427 template <> struct isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>{ enum { value = true }; };
32428 template <> struct isStructureChainValid<PhysicalDeviceImageFormatInfo2KHR, PhysicalDeviceExternalImageFormatInfoKHR>{ enum { value = true }; };
32429 template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoKHR>{ enum { value = true }; };
32430 template <> struct isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfoKHR>{ enum { value = true }; };
32431 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032432#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032433 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032434#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032435 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>{ enum { value = true }; };
32436 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryHostPointerInfoEXT>{ enum { value = true }; };
32437 template <> struct isStructureChainValid<ImageFormatProperties2KHR, ExternalImageFormatPropertiesKHR>{ enum { value = true }; };
32438 template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfoKHR>{ enum { value = true }; };
32439 template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfoKHR>{ enum { value = true }; };
32440 template <> struct isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>{ enum { value = true }; };
32441 template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfoKHX>{ enum { value = true }; };
32442 template <> struct isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHX>{ enum { value = true }; };
32443 template <> struct isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHX>{ enum { value = true }; };
32444 template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>{ enum { value = true }; };
32445 template <> struct isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>{ enum { value = true }; };
32446 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePointClippingPropertiesKHR>{ enum { value = true }; };
32447 template <> struct isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>{ enum { value = true }; };
32448 template <> struct isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfoKHR>{ enum { value = true }; };
32449 template <> struct isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>{ enum { value = true }; };
32450 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>{ enum { value = true }; };
32451 template <> struct isStructureChainValid<DeviceQueueCreateInfo, DeviceQueueGlobalPriorityCreateInfoEXT>{ enum { value = true }; };
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032452 template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationConservativeStateCreateInfoEXT>{ enum { value = true }; };
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032453 template <> struct isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfoKHX>{ enum { value = true }; };
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032454 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032455 {
32456 return "(void)";
32457 }
32458
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032459 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032460 {
32461 return "{}";
32462 }
32463
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032464 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032465 {
32466 return "(void)";
32467 }
32468
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032469 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032470 {
32471 return "{}";
32472 }
32473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032474 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032475 {
32476 return "(void)";
32477 }
32478
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032479 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032480 {
32481 return "{}";
32482 }
32483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032484 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032485 {
32486 return "(void)";
32487 }
32488
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032489 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032490 {
32491 return "{}";
32492 }
32493
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032494 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032495 {
32496 return "(void)";
32497 }
32498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032499 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032500 {
32501 return "{}";
32502 }
32503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032504 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032505 {
32506 return "(void)";
32507 }
32508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032509 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032510 {
32511 return "{}";
32512 }
32513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032514 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032515 {
32516 return "(void)";
32517 }
32518
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032519 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032520 {
32521 return "{}";
32522 }
32523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032524 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032525 {
32526 return "(void)";
32527 }
32528
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032529 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032530 {
32531 return "{}";
32532 }
32533
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032534 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032535 {
32536 return "(void)";
32537 }
32538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032539 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032540 {
32541 return "{}";
32542 }
32543
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032544 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032545 {
32546 return "(void)";
32547 }
32548
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032549 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032550 {
32551 return "{}";
32552 }
32553
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032554 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032555 {
32556 return "(void)";
32557 }
32558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032559 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032560 {
32561 return "{}";
32562 }
32563
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032564 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032565 {
32566 return "(void)";
32567 }
32568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032569 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032570 {
32571 return "{}";
32572 }
32573
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032574 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032575 {
32576 return "(void)";
32577 }
32578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032579 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032580 {
32581 return "{}";
32582 }
32583
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032584 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032585 {
32586 return "(void)";
32587 }
32588
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032589 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032590 {
32591 return "{}";
32592 }
32593
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032594 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032595 {
32596 return "(void)";
32597 }
32598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032599 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032600 {
32601 return "{}";
32602 }
32603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032604 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032605 {
32606 return "(void)";
32607 }
32608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032609 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032610 {
32611 return "{}";
32612 }
32613
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032614 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032615 {
32616 return "(void)";
32617 }
32618
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032619 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032620 {
32621 return "{}";
32622 }
32623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032624 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032625 {
32626 return "(void)";
32627 }
32628
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032629 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032630 {
32631 return "{}";
32632 }
32633
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032634 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032635 {
32636 return "(void)";
32637 }
32638
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032639 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032640 {
32641 return "{}";
32642 }
32643
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032644 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032645 {
32646 return "(void)";
32647 }
32648
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032649 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032650 {
32651 return "{}";
32652 }
32653
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032654 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032655 {
32656 return "(void)";
32657 }
32658
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032659 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032660 {
32661 return "{}";
32662 }
32663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032664 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032665 {
32666 return "(void)";
32667 }
32668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032669 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032670 {
32671 return "{}";
32672 }
32673
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032674 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032675 {
32676 return "(void)";
32677 }
32678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032679 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032680 {
32681 return "{}";
32682 }
32683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032684 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032685 {
32686 return "(void)";
32687 }
32688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032689 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032690 {
32691 return "{}";
32692 }
32693
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032694 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032695 {
32696 return "(void)";
32697 }
32698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032699 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032700 {
32701 return "{}";
32702 }
32703
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032704 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032705 {
32706 return "(void)";
32707 }
32708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032709 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032710 {
32711 return "{}";
32712 }
32713
Mark Young0f183a82017-02-28 09:58:04 -070032714 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032715 {
32716 return "(void)";
32717 }
32718
Mark Young0f183a82017-02-28 09:58:04 -070032719 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032720 {
32721 return "{}";
32722 }
32723
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032724 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032725 {
32726 return "(void)";
32727 }
32728
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032729 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032730 {
32731 return "{}";
32732 }
32733
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032734 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032735 {
32736 return "(void)";
32737 }
32738
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032739 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032740 {
32741 return "{}";
32742 }
32743
32744#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032745 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032746 {
32747 return "(void)";
32748 }
32749#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32750
32751#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032752 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032753 {
32754 return "{}";
32755 }
32756#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32757
32758#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032759 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032760 {
32761 return "(void)";
32762 }
32763#endif /*VK_USE_PLATFORM_MIR_KHR*/
32764
32765#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032766 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032767 {
32768 return "{}";
32769 }
32770#endif /*VK_USE_PLATFORM_MIR_KHR*/
32771
Mark Young39389872017-01-19 21:10:49 -070032772#ifdef VK_USE_PLATFORM_VI_NN
32773 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
32774 {
32775 return "(void)";
32776 }
32777#endif /*VK_USE_PLATFORM_VI_NN*/
32778
32779#ifdef VK_USE_PLATFORM_VI_NN
32780 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
32781 {
32782 return "{}";
32783 }
32784#endif /*VK_USE_PLATFORM_VI_NN*/
32785
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032786#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032787 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032788 {
32789 return "(void)";
32790 }
32791#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32792
32793#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032794 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032795 {
32796 return "{}";
32797 }
32798#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32799
32800#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032801 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032802 {
32803 return "(void)";
32804 }
32805#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32806
32807#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032808 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032809 {
32810 return "{}";
32811 }
32812#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32813
32814#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032815 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032816 {
32817 return "(void)";
32818 }
32819#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32820
32821#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032822 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032823 {
32824 return "{}";
32825 }
32826#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32827
32828#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032829 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032830 {
32831 return "(void)";
32832 }
32833#endif /*VK_USE_PLATFORM_XCB_KHR*/
32834
32835#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032836 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032837 {
32838 return "{}";
32839 }
32840#endif /*VK_USE_PLATFORM_XCB_KHR*/
32841
Mark Young0f183a82017-02-28 09:58:04 -070032842#ifdef VK_USE_PLATFORM_IOS_MVK
32843 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
32844 {
32845 return "(void)";
32846 }
32847#endif /*VK_USE_PLATFORM_IOS_MVK*/
32848
32849#ifdef VK_USE_PLATFORM_IOS_MVK
32850 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
32851 {
32852 return "{}";
32853 }
32854#endif /*VK_USE_PLATFORM_IOS_MVK*/
32855
32856#ifdef VK_USE_PLATFORM_MACOS_MVK
32857 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
32858 {
32859 return "(void)";
32860 }
32861#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32862
32863#ifdef VK_USE_PLATFORM_MACOS_MVK
32864 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
32865 {
32866 return "{}";
32867 }
32868#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32869
Mark Young39389872017-01-19 21:10:49 -070032870 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
32871 {
32872 return "(void)";
32873 }
32874
32875 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
32876 {
32877 return "{}";
32878 }
32879
Mark Young0f183a82017-02-28 09:58:04 -070032880 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
32881 {
32882 return "(void)";
32883 }
32884
32885 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
32886 {
32887 return "{}";
32888 }
32889
32890 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
32891 {
32892 return "(void)";
32893 }
32894
32895 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
32896 {
32897 return "{}";
32898 }
32899
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032900 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
32901 {
32902 return "(void)";
32903 }
32904
32905 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
32906 {
32907 return "{}";
32908 }
32909
32910 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
32911 {
32912 return "(void)";
32913 }
32914
32915 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
32916 {
32917 return "{}";
32918 }
32919
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032920 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
32921 {
32922 return "(void)";
32923 }
32924
32925 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
32926 {
32927 return "{}";
32928 }
32929
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070032930 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationConservativeStateCreateFlagBitsEXT)
32931 {
32932 return "(void)";
32933 }
32934
32935 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationConservativeStateCreateFlagsEXT)
32936 {
32937 return "{}";
32938 }
32939
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032940 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032941 {
32942 switch (value)
32943 {
32944 case ImageLayout::eUndefined: return "Undefined";
32945 case ImageLayout::eGeneral: return "General";
32946 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
32947 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
32948 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
32949 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
32950 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
32951 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
32952 case ImageLayout::ePreinitialized: return "Preinitialized";
32953 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032954 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060032955 case ImageLayout::eDepthReadOnlyStencilAttachmentOptimalKHR: return "DepthReadOnlyStencilAttachmentOptimalKHR";
32956 case ImageLayout::eDepthAttachmentStencilReadOnlyOptimalKHR: return "DepthAttachmentStencilReadOnlyOptimalKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032957 default: return "invalid";
32958 }
32959 }
32960
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032961 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032962 {
32963 switch (value)
32964 {
32965 case AttachmentLoadOp::eLoad: return "Load";
32966 case AttachmentLoadOp::eClear: return "Clear";
32967 case AttachmentLoadOp::eDontCare: return "DontCare";
32968 default: return "invalid";
32969 }
32970 }
32971
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032972 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032973 {
32974 switch (value)
32975 {
32976 case AttachmentStoreOp::eStore: return "Store";
32977 case AttachmentStoreOp::eDontCare: return "DontCare";
32978 default: return "invalid";
32979 }
32980 }
32981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032982 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032983 {
32984 switch (value)
32985 {
32986 case ImageType::e1D: return "1D";
32987 case ImageType::e2D: return "2D";
32988 case ImageType::e3D: return "3D";
32989 default: return "invalid";
32990 }
32991 }
32992
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032993 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032994 {
32995 switch (value)
32996 {
32997 case ImageTiling::eOptimal: return "Optimal";
32998 case ImageTiling::eLinear: return "Linear";
32999 default: return "invalid";
33000 }
33001 }
33002
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033003 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033004 {
33005 switch (value)
33006 {
33007 case ImageViewType::e1D: return "1D";
33008 case ImageViewType::e2D: return "2D";
33009 case ImageViewType::e3D: return "3D";
33010 case ImageViewType::eCube: return "Cube";
33011 case ImageViewType::e1DArray: return "1DArray";
33012 case ImageViewType::e2DArray: return "2DArray";
33013 case ImageViewType::eCubeArray: return "CubeArray";
33014 default: return "invalid";
33015 }
33016 }
33017
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033018 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033019 {
33020 switch (value)
33021 {
33022 case CommandBufferLevel::ePrimary: return "Primary";
33023 case CommandBufferLevel::eSecondary: return "Secondary";
33024 default: return "invalid";
33025 }
33026 }
33027
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033028 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033029 {
33030 switch (value)
33031 {
33032 case ComponentSwizzle::eIdentity: return "Identity";
33033 case ComponentSwizzle::eZero: return "Zero";
33034 case ComponentSwizzle::eOne: return "One";
33035 case ComponentSwizzle::eR: return "R";
33036 case ComponentSwizzle::eG: return "G";
33037 case ComponentSwizzle::eB: return "B";
33038 case ComponentSwizzle::eA: return "A";
33039 default: return "invalid";
33040 }
33041 }
33042
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033043 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033044 {
33045 switch (value)
33046 {
33047 case DescriptorType::eSampler: return "Sampler";
33048 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
33049 case DescriptorType::eSampledImage: return "SampledImage";
33050 case DescriptorType::eStorageImage: return "StorageImage";
33051 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
33052 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
33053 case DescriptorType::eUniformBuffer: return "UniformBuffer";
33054 case DescriptorType::eStorageBuffer: return "StorageBuffer";
33055 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
33056 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
33057 case DescriptorType::eInputAttachment: return "InputAttachment";
33058 default: return "invalid";
33059 }
33060 }
33061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033062 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033063 {
33064 switch (value)
33065 {
33066 case QueryType::eOcclusion: return "Occlusion";
33067 case QueryType::ePipelineStatistics: return "PipelineStatistics";
33068 case QueryType::eTimestamp: return "Timestamp";
33069 default: return "invalid";
33070 }
33071 }
33072
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033073 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033074 {
33075 switch (value)
33076 {
33077 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
33078 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
33079 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
33080 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
33081 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
33082 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
33083 default: return "invalid";
33084 }
33085 }
33086
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033087 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033088 {
33089 switch (value)
33090 {
33091 case PipelineBindPoint::eGraphics: return "Graphics";
33092 case PipelineBindPoint::eCompute: return "Compute";
33093 default: return "invalid";
33094 }
33095 }
33096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033097 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033098 {
33099 switch (value)
33100 {
33101 case PipelineCacheHeaderVersion::eOne: return "One";
33102 default: return "invalid";
33103 }
33104 }
33105
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033106 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033107 {
33108 switch (value)
33109 {
33110 case PrimitiveTopology::ePointList: return "PointList";
33111 case PrimitiveTopology::eLineList: return "LineList";
33112 case PrimitiveTopology::eLineStrip: return "LineStrip";
33113 case PrimitiveTopology::eTriangleList: return "TriangleList";
33114 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
33115 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
33116 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
33117 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
33118 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
33119 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
33120 case PrimitiveTopology::ePatchList: return "PatchList";
33121 default: return "invalid";
33122 }
33123 }
33124
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033125 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033126 {
33127 switch (value)
33128 {
33129 case SharingMode::eExclusive: return "Exclusive";
33130 case SharingMode::eConcurrent: return "Concurrent";
33131 default: return "invalid";
33132 }
33133 }
33134
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033135 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033136 {
33137 switch (value)
33138 {
33139 case IndexType::eUint16: return "Uint16";
33140 case IndexType::eUint32: return "Uint32";
33141 default: return "invalid";
33142 }
33143 }
33144
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033145 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033146 {
33147 switch (value)
33148 {
33149 case Filter::eNearest: return "Nearest";
33150 case Filter::eLinear: return "Linear";
33151 case Filter::eCubicIMG: return "CubicIMG";
33152 default: return "invalid";
33153 }
33154 }
33155
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033156 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033157 {
33158 switch (value)
33159 {
33160 case SamplerMipmapMode::eNearest: return "Nearest";
33161 case SamplerMipmapMode::eLinear: return "Linear";
33162 default: return "invalid";
33163 }
33164 }
33165
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033166 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033167 {
33168 switch (value)
33169 {
33170 case SamplerAddressMode::eRepeat: return "Repeat";
33171 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
33172 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
33173 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
33174 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
33175 default: return "invalid";
33176 }
33177 }
33178
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033179 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033180 {
33181 switch (value)
33182 {
33183 case CompareOp::eNever: return "Never";
33184 case CompareOp::eLess: return "Less";
33185 case CompareOp::eEqual: return "Equal";
33186 case CompareOp::eLessOrEqual: return "LessOrEqual";
33187 case CompareOp::eGreater: return "Greater";
33188 case CompareOp::eNotEqual: return "NotEqual";
33189 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
33190 case CompareOp::eAlways: return "Always";
33191 default: return "invalid";
33192 }
33193 }
33194
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033195 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033196 {
33197 switch (value)
33198 {
33199 case PolygonMode::eFill: return "Fill";
33200 case PolygonMode::eLine: return "Line";
33201 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033202 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033203 default: return "invalid";
33204 }
33205 }
33206
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033207 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033208 {
33209 switch (value)
33210 {
33211 case CullModeFlagBits::eNone: return "None";
33212 case CullModeFlagBits::eFront: return "Front";
33213 case CullModeFlagBits::eBack: return "Back";
33214 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
33215 default: return "invalid";
33216 }
33217 }
33218
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033219 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033220 {
33221 if (!value) return "{}";
33222 std::string result;
33223 if (value & CullModeFlagBits::eNone) result += "None | ";
33224 if (value & CullModeFlagBits::eFront) result += "Front | ";
33225 if (value & CullModeFlagBits::eBack) result += "Back | ";
33226 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
33227 return "{" + result.substr(0, result.size() - 3) + "}";
33228 }
33229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033230 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033231 {
33232 switch (value)
33233 {
33234 case FrontFace::eCounterClockwise: return "CounterClockwise";
33235 case FrontFace::eClockwise: return "Clockwise";
33236 default: return "invalid";
33237 }
33238 }
33239
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033240 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033241 {
33242 switch (value)
33243 {
33244 case BlendFactor::eZero: return "Zero";
33245 case BlendFactor::eOne: return "One";
33246 case BlendFactor::eSrcColor: return "SrcColor";
33247 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
33248 case BlendFactor::eDstColor: return "DstColor";
33249 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
33250 case BlendFactor::eSrcAlpha: return "SrcAlpha";
33251 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
33252 case BlendFactor::eDstAlpha: return "DstAlpha";
33253 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
33254 case BlendFactor::eConstantColor: return "ConstantColor";
33255 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
33256 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
33257 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
33258 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
33259 case BlendFactor::eSrc1Color: return "Src1Color";
33260 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
33261 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
33262 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
33263 default: return "invalid";
33264 }
33265 }
33266
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033267 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033268 {
33269 switch (value)
33270 {
33271 case BlendOp::eAdd: return "Add";
33272 case BlendOp::eSubtract: return "Subtract";
33273 case BlendOp::eReverseSubtract: return "ReverseSubtract";
33274 case BlendOp::eMin: return "Min";
33275 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033276 case BlendOp::eZeroEXT: return "ZeroEXT";
33277 case BlendOp::eSrcEXT: return "SrcEXT";
33278 case BlendOp::eDstEXT: return "DstEXT";
33279 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
33280 case BlendOp::eDstOverEXT: return "DstOverEXT";
33281 case BlendOp::eSrcInEXT: return "SrcInEXT";
33282 case BlendOp::eDstInEXT: return "DstInEXT";
33283 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
33284 case BlendOp::eDstOutEXT: return "DstOutEXT";
33285 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
33286 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
33287 case BlendOp::eXorEXT: return "XorEXT";
33288 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
33289 case BlendOp::eScreenEXT: return "ScreenEXT";
33290 case BlendOp::eOverlayEXT: return "OverlayEXT";
33291 case BlendOp::eDarkenEXT: return "DarkenEXT";
33292 case BlendOp::eLightenEXT: return "LightenEXT";
33293 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
33294 case BlendOp::eColorburnEXT: return "ColorburnEXT";
33295 case BlendOp::eHardlightEXT: return "HardlightEXT";
33296 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
33297 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
33298 case BlendOp::eExclusionEXT: return "ExclusionEXT";
33299 case BlendOp::eInvertEXT: return "InvertEXT";
33300 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
33301 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
33302 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
33303 case BlendOp::eVividlightEXT: return "VividlightEXT";
33304 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
33305 case BlendOp::ePinlightEXT: return "PinlightEXT";
33306 case BlendOp::eHardmixEXT: return "HardmixEXT";
33307 case BlendOp::eHslHueEXT: return "HslHueEXT";
33308 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
33309 case BlendOp::eHslColorEXT: return "HslColorEXT";
33310 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
33311 case BlendOp::ePlusEXT: return "PlusEXT";
33312 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
33313 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
33314 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
33315 case BlendOp::eMinusEXT: return "MinusEXT";
33316 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
33317 case BlendOp::eContrastEXT: return "ContrastEXT";
33318 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
33319 case BlendOp::eRedEXT: return "RedEXT";
33320 case BlendOp::eGreenEXT: return "GreenEXT";
33321 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033322 default: return "invalid";
33323 }
33324 }
33325
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033326 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033327 {
33328 switch (value)
33329 {
33330 case StencilOp::eKeep: return "Keep";
33331 case StencilOp::eZero: return "Zero";
33332 case StencilOp::eReplace: return "Replace";
33333 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
33334 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
33335 case StencilOp::eInvert: return "Invert";
33336 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
33337 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
33338 default: return "invalid";
33339 }
33340 }
33341
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033342 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033343 {
33344 switch (value)
33345 {
33346 case LogicOp::eClear: return "Clear";
33347 case LogicOp::eAnd: return "And";
33348 case LogicOp::eAndReverse: return "AndReverse";
33349 case LogicOp::eCopy: return "Copy";
33350 case LogicOp::eAndInverted: return "AndInverted";
33351 case LogicOp::eNoOp: return "NoOp";
33352 case LogicOp::eXor: return "Xor";
33353 case LogicOp::eOr: return "Or";
33354 case LogicOp::eNor: return "Nor";
33355 case LogicOp::eEquivalent: return "Equivalent";
33356 case LogicOp::eInvert: return "Invert";
33357 case LogicOp::eOrReverse: return "OrReverse";
33358 case LogicOp::eCopyInverted: return "CopyInverted";
33359 case LogicOp::eOrInverted: return "OrInverted";
33360 case LogicOp::eNand: return "Nand";
33361 case LogicOp::eSet: return "Set";
33362 default: return "invalid";
33363 }
33364 }
33365
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033366 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033367 {
33368 switch (value)
33369 {
33370 case InternalAllocationType::eExecutable: return "Executable";
33371 default: return "invalid";
33372 }
33373 }
33374
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033375 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033376 {
33377 switch (value)
33378 {
33379 case SystemAllocationScope::eCommand: return "Command";
33380 case SystemAllocationScope::eObject: return "Object";
33381 case SystemAllocationScope::eCache: return "Cache";
33382 case SystemAllocationScope::eDevice: return "Device";
33383 case SystemAllocationScope::eInstance: return "Instance";
33384 default: return "invalid";
33385 }
33386 }
33387
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033388 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033389 {
33390 switch (value)
33391 {
33392 case PhysicalDeviceType::eOther: return "Other";
33393 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
33394 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
33395 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
33396 case PhysicalDeviceType::eCpu: return "Cpu";
33397 default: return "invalid";
33398 }
33399 }
33400
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033401 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033402 {
33403 switch (value)
33404 {
33405 case VertexInputRate::eVertex: return "Vertex";
33406 case VertexInputRate::eInstance: return "Instance";
33407 default: return "invalid";
33408 }
33409 }
33410
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033411 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033412 {
33413 switch (value)
33414 {
33415 case Format::eUndefined: return "Undefined";
33416 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
33417 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
33418 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
33419 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
33420 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
33421 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
33422 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
33423 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
33424 case Format::eR8Unorm: return "R8Unorm";
33425 case Format::eR8Snorm: return "R8Snorm";
33426 case Format::eR8Uscaled: return "R8Uscaled";
33427 case Format::eR8Sscaled: return "R8Sscaled";
33428 case Format::eR8Uint: return "R8Uint";
33429 case Format::eR8Sint: return "R8Sint";
33430 case Format::eR8Srgb: return "R8Srgb";
33431 case Format::eR8G8Unorm: return "R8G8Unorm";
33432 case Format::eR8G8Snorm: return "R8G8Snorm";
33433 case Format::eR8G8Uscaled: return "R8G8Uscaled";
33434 case Format::eR8G8Sscaled: return "R8G8Sscaled";
33435 case Format::eR8G8Uint: return "R8G8Uint";
33436 case Format::eR8G8Sint: return "R8G8Sint";
33437 case Format::eR8G8Srgb: return "R8G8Srgb";
33438 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
33439 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
33440 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
33441 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
33442 case Format::eR8G8B8Uint: return "R8G8B8Uint";
33443 case Format::eR8G8B8Sint: return "R8G8B8Sint";
33444 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
33445 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
33446 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
33447 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
33448 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
33449 case Format::eB8G8R8Uint: return "B8G8R8Uint";
33450 case Format::eB8G8R8Sint: return "B8G8R8Sint";
33451 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
33452 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
33453 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
33454 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
33455 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
33456 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
33457 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
33458 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
33459 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
33460 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
33461 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
33462 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
33463 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
33464 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
33465 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
33466 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
33467 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
33468 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
33469 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
33470 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
33471 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
33472 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
33473 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
33474 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
33475 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
33476 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
33477 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
33478 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
33479 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
33480 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
33481 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
33482 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
33483 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
33484 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
33485 case Format::eR16Unorm: return "R16Unorm";
33486 case Format::eR16Snorm: return "R16Snorm";
33487 case Format::eR16Uscaled: return "R16Uscaled";
33488 case Format::eR16Sscaled: return "R16Sscaled";
33489 case Format::eR16Uint: return "R16Uint";
33490 case Format::eR16Sint: return "R16Sint";
33491 case Format::eR16Sfloat: return "R16Sfloat";
33492 case Format::eR16G16Unorm: return "R16G16Unorm";
33493 case Format::eR16G16Snorm: return "R16G16Snorm";
33494 case Format::eR16G16Uscaled: return "R16G16Uscaled";
33495 case Format::eR16G16Sscaled: return "R16G16Sscaled";
33496 case Format::eR16G16Uint: return "R16G16Uint";
33497 case Format::eR16G16Sint: return "R16G16Sint";
33498 case Format::eR16G16Sfloat: return "R16G16Sfloat";
33499 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
33500 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
33501 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
33502 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
33503 case Format::eR16G16B16Uint: return "R16G16B16Uint";
33504 case Format::eR16G16B16Sint: return "R16G16B16Sint";
33505 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
33506 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
33507 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
33508 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
33509 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
33510 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
33511 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
33512 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
33513 case Format::eR32Uint: return "R32Uint";
33514 case Format::eR32Sint: return "R32Sint";
33515 case Format::eR32Sfloat: return "R32Sfloat";
33516 case Format::eR32G32Uint: return "R32G32Uint";
33517 case Format::eR32G32Sint: return "R32G32Sint";
33518 case Format::eR32G32Sfloat: return "R32G32Sfloat";
33519 case Format::eR32G32B32Uint: return "R32G32B32Uint";
33520 case Format::eR32G32B32Sint: return "R32G32B32Sint";
33521 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
33522 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
33523 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
33524 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
33525 case Format::eR64Uint: return "R64Uint";
33526 case Format::eR64Sint: return "R64Sint";
33527 case Format::eR64Sfloat: return "R64Sfloat";
33528 case Format::eR64G64Uint: return "R64G64Uint";
33529 case Format::eR64G64Sint: return "R64G64Sint";
33530 case Format::eR64G64Sfloat: return "R64G64Sfloat";
33531 case Format::eR64G64B64Uint: return "R64G64B64Uint";
33532 case Format::eR64G64B64Sint: return "R64G64B64Sint";
33533 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
33534 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
33535 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
33536 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
33537 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
33538 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
33539 case Format::eD16Unorm: return "D16Unorm";
33540 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
33541 case Format::eD32Sfloat: return "D32Sfloat";
33542 case Format::eS8Uint: return "S8Uint";
33543 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
33544 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
33545 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
33546 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
33547 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
33548 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
33549 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
33550 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
33551 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
33552 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
33553 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
33554 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
33555 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
33556 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
33557 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
33558 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
33559 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
33560 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
33561 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
33562 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
33563 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
33564 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
33565 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
33566 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
33567 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
33568 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
33569 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
33570 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
33571 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
33572 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
33573 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
33574 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
33575 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
33576 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
33577 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
33578 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
33579 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
33580 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
33581 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
33582 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
33583 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
33584 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
33585 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
33586 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
33587 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
33588 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
33589 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
33590 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
33591 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
33592 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
33593 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
33594 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
33595 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
33596 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
33597 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
33598 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
33599 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060033600 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
33601 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
33602 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
33603 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
33604 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
33605 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
33606 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
33607 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033608 case Format::eG8B8G8R8422UnormKHR: return "G8B8G8R8422UnormKHR";
33609 case Format::eB8G8R8G8422UnormKHR: return "B8G8R8G8422UnormKHR";
33610 case Format::eG8B8R83Plane420UnormKHR: return "G8B8R83Plane420UnormKHR";
33611 case Format::eG8B8R82Plane420UnormKHR: return "G8B8R82Plane420UnormKHR";
33612 case Format::eG8B8R83Plane422UnormKHR: return "G8B8R83Plane422UnormKHR";
33613 case Format::eG8B8R82Plane422UnormKHR: return "G8B8R82Plane422UnormKHR";
33614 case Format::eG8B8R83Plane444UnormKHR: return "G8B8R83Plane444UnormKHR";
33615 case Format::eR10X6UnormPack16KHR: return "R10X6UnormPack16KHR";
33616 case Format::eR10X6G10X6Unorm2Pack16KHR: return "R10X6G10X6Unorm2Pack16KHR";
33617 case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16KHR: return "R10X6G10X6B10X6A10X6Unorm4Pack16KHR";
33618 case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR: return "G10X6B10X6G10X6R10X6422Unorm4Pack16KHR";
33619 case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR: return "B10X6G10X6R10X6G10X6422Unorm4Pack16KHR";
33620 case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane420Unorm3Pack16KHR";
33621 case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane420Unorm3Pack16KHR";
33622 case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane422Unorm3Pack16KHR";
33623 case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane422Unorm3Pack16KHR";
33624 case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane444Unorm3Pack16KHR";
33625 case Format::eR12X4UnormPack16KHR: return "R12X4UnormPack16KHR";
33626 case Format::eR12X4G12X4Unorm2Pack16KHR: return "R12X4G12X4Unorm2Pack16KHR";
33627 case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16KHR: return "R12X4G12X4B12X4A12X4Unorm4Pack16KHR";
33628 case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR: return "G12X4B12X4G12X4R12X4422Unorm4Pack16KHR";
33629 case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR: return "B12X4G12X4R12X4G12X4422Unorm4Pack16KHR";
33630 case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane420Unorm3Pack16KHR";
33631 case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane420Unorm3Pack16KHR";
33632 case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane422Unorm3Pack16KHR";
33633 case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane422Unorm3Pack16KHR";
33634 case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane444Unorm3Pack16KHR";
33635 case Format::eG16B16G16R16422UnormKHR: return "G16B16G16R16422UnormKHR";
33636 case Format::eB16G16R16G16422UnormKHR: return "B16G16R16G16422UnormKHR";
33637 case Format::eG16B16R163Plane420UnormKHR: return "G16B16R163Plane420UnormKHR";
33638 case Format::eG16B16R162Plane420UnormKHR: return "G16B16R162Plane420UnormKHR";
33639 case Format::eG16B16R163Plane422UnormKHR: return "G16B16R163Plane422UnormKHR";
33640 case Format::eG16B16R162Plane422UnormKHR: return "G16B16R162Plane422UnormKHR";
33641 case Format::eG16B16R163Plane444UnormKHR: return "G16B16R163Plane444UnormKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033642 default: return "invalid";
33643 }
33644 }
33645
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033646 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033647 {
33648 switch (value)
33649 {
33650 case StructureType::eApplicationInfo: return "ApplicationInfo";
33651 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
33652 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
33653 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
33654 case StructureType::eSubmitInfo: return "SubmitInfo";
33655 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
33656 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
33657 case StructureType::eBindSparseInfo: return "BindSparseInfo";
33658 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
33659 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
33660 case StructureType::eEventCreateInfo: return "EventCreateInfo";
33661 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
33662 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
33663 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
33664 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
33665 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
33666 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
33667 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
33668 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
33669 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
33670 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
33671 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
33672 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
33673 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
33674 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
33675 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
33676 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
33677 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
33678 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
33679 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
33680 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
33681 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
33682 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
33683 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
33684 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
33685 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
33686 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
33687 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
33688 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
33689 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
33690 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
33691 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
33692 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
33693 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
33694 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
33695 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
33696 case StructureType::eMemoryBarrier: return "MemoryBarrier";
33697 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
33698 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
33699 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
33700 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
33701 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
33702 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
33703 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
33704 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
33705 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
33706 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
33707 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
33708 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
33709 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
33710 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
33711 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
33712 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
33713 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
33714 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
33715 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
33716 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
33717 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033718 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070033719 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
33720 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
33721 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060033722 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
33723 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
33724 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
33725 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
33726 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033727 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
33728 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
33729 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
33730 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
33731 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
33732 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
33733 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
33734 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
33735 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070033736 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033737 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
33738 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
33739 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
33740 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033741 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033742 case StructureType::eBindBufferMemoryDeviceGroupInfoKHX: return "BindBufferMemoryDeviceGroupInfoKHX";
33743 case StructureType::eBindImageMemoryDeviceGroupInfoKHX: return "BindImageMemoryDeviceGroupInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033744 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
33745 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
33746 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033747 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
33748 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060033749 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070033750 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070033751 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
33752 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033753 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
33754 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
33755 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
33756 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
33757 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
33758 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
33759 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
33760 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
33761 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
33762 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
33763 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
33764 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
33765 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
33766 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
33767 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
33768 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
33769 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
33770 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
33771 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
33772 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
33773 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
33774 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
33775 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
33776 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
33777 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033778 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033779 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060033780 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033781 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033782 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
33783 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
33784 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
33785 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
33786 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
33787 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070033788 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033789 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
33790 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
33791 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
33792 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
33793 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033794 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070033795 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
33796 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
33797 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
33798 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070033799 case StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT: return "PhysicalDeviceConservativeRasterizationPropertiesEXT";
33800 case StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT: return "PipelineRasterizationConservativeStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033801 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033802 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033803 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
33804 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
33805 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
33806 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
33807 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
33808 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
33809 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
33810 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033811 case StructureType::ePhysicalDevicePointClippingPropertiesKHR: return "PhysicalDevicePointClippingPropertiesKHR";
33812 case StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR: return "RenderPassInputAttachmentAspectCreateInfoKHR";
33813 case StructureType::eImageViewUsageCreateInfoKHR: return "ImageViewUsageCreateInfoKHR";
33814 case StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR: return "PipelineTessellationDomainOriginStateCreateInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033815 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
33816 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
33817 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033818 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033819 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
33820 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033821 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
33822 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033823 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
33824 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033825 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
33826 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
33827 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
33828 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
33829 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033830 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
33831 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
33832 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
33833 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
33834 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033835 case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033836 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
33837 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
33838 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
33839 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
33840 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033841 case StructureType::eSamplerYcbcrConversionCreateInfoKHR: return "SamplerYcbcrConversionCreateInfoKHR";
33842 case StructureType::eSamplerYcbcrConversionInfoKHR: return "SamplerYcbcrConversionInfoKHR";
33843 case StructureType::eBindImagePlaneMemoryInfoKHR: return "BindImagePlaneMemoryInfoKHR";
33844 case StructureType::eImagePlaneMemoryRequirementsInfoKHR: return "ImagePlaneMemoryRequirementsInfoKHR";
33845 case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR: return "PhysicalDeviceSamplerYcbcrConversionFeaturesKHR";
33846 case StructureType::eSamplerYcbcrConversionImageFormatPropertiesKHR: return "SamplerYcbcrConversionImageFormatPropertiesKHR";
33847 case StructureType::eBindBufferMemoryInfoKHR: return "BindBufferMemoryInfoKHR";
33848 case StructureType::eBindImageMemoryInfoKHR: return "BindImageMemoryInfoKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033849 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
33850 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060033851 case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT: return "DeviceQueueGlobalPriorityCreateInfoEXT";
Mark Lobodzinski417d5702017-11-27 12:00:45 -070033852 case StructureType::eImportMemoryHostPointerInfoEXT: return "ImportMemoryHostPointerInfoEXT";
33853 case StructureType::eMemoryHostPointerPropertiesEXT: return "MemoryHostPointerPropertiesEXT";
33854 case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT: return "PhysicalDeviceExternalMemoryHostPropertiesEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033855 default: return "invalid";
33856 }
33857 }
33858
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033859 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033860 {
33861 switch (value)
33862 {
33863 case SubpassContents::eInline: return "Inline";
33864 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
33865 default: return "invalid";
33866 }
33867 }
33868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033869 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033870 {
33871 switch (value)
33872 {
33873 case DynamicState::eViewport: return "Viewport";
33874 case DynamicState::eScissor: return "Scissor";
33875 case DynamicState::eLineWidth: return "LineWidth";
33876 case DynamicState::eDepthBias: return "DepthBias";
33877 case DynamicState::eBlendConstants: return "BlendConstants";
33878 case DynamicState::eDepthBounds: return "DepthBounds";
33879 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
33880 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
33881 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070033882 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
33883 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033884 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
Mark Young0f183a82017-02-28 09:58:04 -070033885 default: return "invalid";
33886 }
33887 }
33888
33889 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
33890 {
33891 switch (value)
33892 {
33893 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
33894 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033895 default: return "invalid";
33896 }
33897 }
33898
Mark Lobodzinski54385432017-05-15 10:27:52 -060033899 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
33900 {
33901 switch (value)
33902 {
33903 case ObjectType::eUnknown: return "Unknown";
33904 case ObjectType::eInstance: return "Instance";
33905 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
33906 case ObjectType::eDevice: return "Device";
33907 case ObjectType::eQueue: return "Queue";
33908 case ObjectType::eSemaphore: return "Semaphore";
33909 case ObjectType::eCommandBuffer: return "CommandBuffer";
33910 case ObjectType::eFence: return "Fence";
33911 case ObjectType::eDeviceMemory: return "DeviceMemory";
33912 case ObjectType::eBuffer: return "Buffer";
33913 case ObjectType::eImage: return "Image";
33914 case ObjectType::eEvent: return "Event";
33915 case ObjectType::eQueryPool: return "QueryPool";
33916 case ObjectType::eBufferView: return "BufferView";
33917 case ObjectType::eImageView: return "ImageView";
33918 case ObjectType::eShaderModule: return "ShaderModule";
33919 case ObjectType::ePipelineCache: return "PipelineCache";
33920 case ObjectType::ePipelineLayout: return "PipelineLayout";
33921 case ObjectType::eRenderPass: return "RenderPass";
33922 case ObjectType::ePipeline: return "Pipeline";
33923 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
33924 case ObjectType::eSampler: return "Sampler";
33925 case ObjectType::eDescriptorPool: return "DescriptorPool";
33926 case ObjectType::eDescriptorSet: return "DescriptorSet";
33927 case ObjectType::eFramebuffer: return "Framebuffer";
33928 case ObjectType::eCommandPool: return "CommandPool";
33929 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
33930 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
33931 case ObjectType::eDisplayKHR: return "DisplayKHR";
33932 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
33933 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
33934 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
33935 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
33936 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033937 case ObjectType::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033938 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033939 default: return "invalid";
33940 }
33941 }
33942
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033943 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033944 {
33945 switch (value)
33946 {
33947 case QueueFlagBits::eGraphics: return "Graphics";
33948 case QueueFlagBits::eCompute: return "Compute";
33949 case QueueFlagBits::eTransfer: return "Transfer";
33950 case QueueFlagBits::eSparseBinding: return "SparseBinding";
33951 default: return "invalid";
33952 }
33953 }
33954
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033955 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033956 {
33957 if (!value) return "{}";
33958 std::string result;
33959 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
33960 if (value & QueueFlagBits::eCompute) result += "Compute | ";
33961 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
33962 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
33963 return "{" + result.substr(0, result.size() - 3) + "}";
33964 }
33965
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033966 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033967 {
33968 switch (value)
33969 {
33970 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
33971 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
33972 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
33973 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
33974 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
33975 default: return "invalid";
33976 }
33977 }
33978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033979 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033980 {
33981 if (!value) return "{}";
33982 std::string result;
33983 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
33984 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
33985 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
33986 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
33987 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
33988 return "{" + result.substr(0, result.size() - 3) + "}";
33989 }
33990
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033991 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033992 {
33993 switch (value)
33994 {
33995 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070033996 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033997 default: return "invalid";
33998 }
33999 }
34000
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034001 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034002 {
34003 if (!value) return "{}";
34004 std::string result;
34005 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070034006 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034007 return "{" + result.substr(0, result.size() - 3) + "}";
34008 }
34009
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034010 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034011 {
34012 switch (value)
34013 {
34014 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
34015 case AccessFlagBits::eIndexRead: return "IndexRead";
34016 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
34017 case AccessFlagBits::eUniformRead: return "UniformRead";
34018 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
34019 case AccessFlagBits::eShaderRead: return "ShaderRead";
34020 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
34021 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
34022 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
34023 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
34024 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
34025 case AccessFlagBits::eTransferRead: return "TransferRead";
34026 case AccessFlagBits::eTransferWrite: return "TransferWrite";
34027 case AccessFlagBits::eHostRead: return "HostRead";
34028 case AccessFlagBits::eHostWrite: return "HostWrite";
34029 case AccessFlagBits::eMemoryRead: return "MemoryRead";
34030 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034031 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
34032 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034033 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034034 default: return "invalid";
34035 }
34036 }
34037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034038 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034039 {
34040 if (!value) return "{}";
34041 std::string result;
34042 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
34043 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
34044 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
34045 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
34046 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
34047 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
34048 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
34049 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
34050 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
34051 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
34052 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
34053 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
34054 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
34055 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
34056 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
34057 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
34058 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034059 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
34060 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034061 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034062 return "{" + result.substr(0, result.size() - 3) + "}";
34063 }
34064
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034065 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034066 {
34067 switch (value)
34068 {
34069 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
34070 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
34071 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
34072 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
34073 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
34074 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
34075 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
34076 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
34077 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
34078 default: return "invalid";
34079 }
34080 }
34081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034082 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034083 {
34084 if (!value) return "{}";
34085 std::string result;
34086 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
34087 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
34088 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
34089 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
34090 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
34091 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
34092 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
34093 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
34094 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
34095 return "{" + result.substr(0, result.size() - 3) + "}";
34096 }
34097
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034098 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034099 {
34100 switch (value)
34101 {
34102 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
34103 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
34104 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
34105 default: return "invalid";
34106 }
34107 }
34108
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034109 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034110 {
34111 if (!value) return "{}";
34112 std::string result;
34113 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
34114 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
34115 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
34116 return "{" + result.substr(0, result.size() - 3) + "}";
34117 }
34118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034119 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034120 {
34121 switch (value)
34122 {
34123 case ShaderStageFlagBits::eVertex: return "Vertex";
34124 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
34125 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
34126 case ShaderStageFlagBits::eGeometry: return "Geometry";
34127 case ShaderStageFlagBits::eFragment: return "Fragment";
34128 case ShaderStageFlagBits::eCompute: return "Compute";
34129 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
34130 case ShaderStageFlagBits::eAll: return "All";
34131 default: return "invalid";
34132 }
34133 }
34134
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034135 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034136 {
34137 if (!value) return "{}";
34138 std::string result;
34139 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
34140 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
34141 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
34142 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
34143 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
34144 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
34145 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34146 if (value & ShaderStageFlagBits::eAll) result += "All | ";
34147 return "{" + result.substr(0, result.size() - 3) + "}";
34148 }
34149
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034150 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034151 {
34152 switch (value)
34153 {
34154 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
34155 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
34156 case ImageUsageFlagBits::eSampled: return "Sampled";
34157 case ImageUsageFlagBits::eStorage: return "Storage";
34158 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
34159 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
34160 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
34161 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
34162 default: return "invalid";
34163 }
34164 }
34165
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034166 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034167 {
34168 if (!value) return "{}";
34169 std::string result;
34170 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
34171 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
34172 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
34173 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
34174 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
34175 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
34176 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
34177 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
34178 return "{" + result.substr(0, result.size() - 3) + "}";
34179 }
34180
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034181 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034182 {
34183 switch (value)
34184 {
34185 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
34186 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
34187 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
34188 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
34189 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070034190 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070034191 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034192 case ImageCreateFlagBits::eBlockTexelViewCompatibleKHR: return "BlockTexelViewCompatibleKHR";
34193 case ImageCreateFlagBits::eExtendedUsageKHR: return "ExtendedUsageKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034194 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034195 case ImageCreateFlagBits::eDisjointKHR: return "DisjointKHR";
34196 case ImageCreateFlagBits::eAliasKHR: return "AliasKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034197 default: return "invalid";
34198 }
34199 }
34200
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034201 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034202 {
34203 if (!value) return "{}";
34204 std::string result;
34205 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
34206 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
34207 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
34208 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
34209 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070034210 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070034211 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034212 if (value & ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) result += "BlockTexelViewCompatibleKHR | ";
34213 if (value & ImageCreateFlagBits::eExtendedUsageKHR) result += "ExtendedUsageKHR | ";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034214 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034215 if (value & ImageCreateFlagBits::eDisjointKHR) result += "DisjointKHR | ";
34216 if (value & ImageCreateFlagBits::eAliasKHR) result += "AliasKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034217 return "{" + result.substr(0, result.size() - 3) + "}";
34218 }
34219
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034220 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034221 {
34222 switch (value)
34223 {
34224 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
34225 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
34226 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070034227 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
34228 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034229 default: return "invalid";
34230 }
34231 }
34232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034233 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034234 {
34235 if (!value) return "{}";
34236 std::string result;
34237 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
34238 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
34239 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070034240 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
34241 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034242 return "{" + result.substr(0, result.size() - 3) + "}";
34243 }
34244
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034245 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034246 {
34247 switch (value)
34248 {
34249 case ColorComponentFlagBits::eR: return "R";
34250 case ColorComponentFlagBits::eG: return "G";
34251 case ColorComponentFlagBits::eB: return "B";
34252 case ColorComponentFlagBits::eA: return "A";
34253 default: return "invalid";
34254 }
34255 }
34256
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034257 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034258 {
34259 if (!value) return "{}";
34260 std::string result;
34261 if (value & ColorComponentFlagBits::eR) result += "R | ";
34262 if (value & ColorComponentFlagBits::eG) result += "G | ";
34263 if (value & ColorComponentFlagBits::eB) result += "B | ";
34264 if (value & ColorComponentFlagBits::eA) result += "A | ";
34265 return "{" + result.substr(0, result.size() - 3) + "}";
34266 }
34267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034268 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034269 {
34270 switch (value)
34271 {
34272 case FenceCreateFlagBits::eSignaled: return "Signaled";
34273 default: return "invalid";
34274 }
34275 }
34276
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034277 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034278 {
34279 if (!value) return "{}";
34280 std::string result;
34281 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
34282 return "{" + result.substr(0, result.size() - 3) + "}";
34283 }
34284
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034285 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034286 {
34287 switch (value)
34288 {
34289 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
34290 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
34291 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
34292 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
34293 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
34294 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
34295 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
34296 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
34297 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
34298 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
34299 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
34300 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
34301 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
34302 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070034303 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
34304 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034305 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034306 case FormatFeatureFlagBits::eMidpointChromaSamplesKHR: return "MidpointChromaSamplesKHR";
34307 case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR: return "SampledImageYcbcrConversionLinearFilterKHR";
34308 case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR: return "SampledImageYcbcrConversionSeparateReconstructionFilterKHR";
34309 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitKHR";
34310 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR";
34311 case FormatFeatureFlagBits::eDisjointKHR: return "DisjointKHR";
34312 case FormatFeatureFlagBits::eCositedChromaSamplesKHR: return "CositedChromaSamplesKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034313 default: return "invalid";
34314 }
34315 }
34316
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034317 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034318 {
34319 if (!value) return "{}";
34320 std::string result;
34321 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
34322 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
34323 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
34324 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
34325 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
34326 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
34327 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
34328 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
34329 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
34330 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
34331 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
34332 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
34333 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
34334 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070034335 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
34336 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034337 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034338 if (value & FormatFeatureFlagBits::eMidpointChromaSamplesKHR) result += "MidpointChromaSamplesKHR | ";
34339 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) result += "SampledImageYcbcrConversionLinearFilterKHR | ";
34340 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) result += "SampledImageYcbcrConversionSeparateReconstructionFilterKHR | ";
34341 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitKHR | ";
34342 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR | ";
34343 if (value & FormatFeatureFlagBits::eDisjointKHR) result += "DisjointKHR | ";
34344 if (value & FormatFeatureFlagBits::eCositedChromaSamplesKHR) result += "CositedChromaSamplesKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034345 return "{" + result.substr(0, result.size() - 3) + "}";
34346 }
34347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034348 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034349 {
34350 switch (value)
34351 {
34352 case QueryControlFlagBits::ePrecise: return "Precise";
34353 default: return "invalid";
34354 }
34355 }
34356
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034357 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034358 {
34359 if (!value) return "{}";
34360 std::string result;
34361 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
34362 return "{" + result.substr(0, result.size() - 3) + "}";
34363 }
34364
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034365 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034366 {
34367 switch (value)
34368 {
34369 case QueryResultFlagBits::e64: return "64";
34370 case QueryResultFlagBits::eWait: return "Wait";
34371 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
34372 case QueryResultFlagBits::ePartial: return "Partial";
34373 default: return "invalid";
34374 }
34375 }
34376
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034377 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034378 {
34379 if (!value) return "{}";
34380 std::string result;
34381 if (value & QueryResultFlagBits::e64) result += "64 | ";
34382 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
34383 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
34384 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
34385 return "{" + result.substr(0, result.size() - 3) + "}";
34386 }
34387
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034388 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034389 {
34390 switch (value)
34391 {
34392 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
34393 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
34394 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
34395 default: return "invalid";
34396 }
34397 }
34398
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034399 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034400 {
34401 if (!value) return "{}";
34402 std::string result;
34403 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
34404 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
34405 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
34406 return "{" + result.substr(0, result.size() - 3) + "}";
34407 }
34408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034409 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034410 {
34411 switch (value)
34412 {
34413 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
34414 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
34415 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
34416 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
34417 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
34418 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
34419 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
34420 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
34421 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
34422 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
34423 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
34424 default: return "invalid";
34425 }
34426 }
34427
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034428 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034429 {
34430 if (!value) return "{}";
34431 std::string result;
34432 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
34433 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
34434 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
34435 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
34436 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
34437 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
34438 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
34439 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
34440 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
34441 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
34442 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
34443 return "{" + result.substr(0, result.size() - 3) + "}";
34444 }
34445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034446 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034447 {
34448 switch (value)
34449 {
34450 case ImageAspectFlagBits::eColor: return "Color";
34451 case ImageAspectFlagBits::eDepth: return "Depth";
34452 case ImageAspectFlagBits::eStencil: return "Stencil";
34453 case ImageAspectFlagBits::eMetadata: return "Metadata";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034454 case ImageAspectFlagBits::ePlane0KHR: return "Plane0KHR";
34455 case ImageAspectFlagBits::ePlane1KHR: return "Plane1KHR";
34456 case ImageAspectFlagBits::ePlane2KHR: return "Plane2KHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034457 default: return "invalid";
34458 }
34459 }
34460
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034461 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034462 {
34463 if (!value) return "{}";
34464 std::string result;
34465 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
34466 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
34467 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
34468 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034469 if (value & ImageAspectFlagBits::ePlane0KHR) result += "Plane0KHR | ";
34470 if (value & ImageAspectFlagBits::ePlane1KHR) result += "Plane1KHR | ";
34471 if (value & ImageAspectFlagBits::ePlane2KHR) result += "Plane2KHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034472 return "{" + result.substr(0, result.size() - 3) + "}";
34473 }
34474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034475 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034476 {
34477 switch (value)
34478 {
34479 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
34480 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
34481 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
34482 default: return "invalid";
34483 }
34484 }
34485
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034486 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034487 {
34488 if (!value) return "{}";
34489 std::string result;
34490 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
34491 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
34492 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
34493 return "{" + result.substr(0, result.size() - 3) + "}";
34494 }
34495
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034496 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034497 {
34498 switch (value)
34499 {
34500 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
34501 default: return "invalid";
34502 }
34503 }
34504
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034505 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034506 {
34507 if (!value) return "{}";
34508 std::string result;
34509 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
34510 return "{" + result.substr(0, result.size() - 3) + "}";
34511 }
34512
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034513 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034514 {
34515 switch (value)
34516 {
34517 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
34518 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
34519 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
34520 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
34521 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
34522 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
34523 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
34524 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
34525 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
34526 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
34527 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
34528 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
34529 case PipelineStageFlagBits::eTransfer: return "Transfer";
34530 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
34531 case PipelineStageFlagBits::eHost: return "Host";
34532 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
34533 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034534 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034535 default: return "invalid";
34536 }
34537 }
34538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034539 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034540 {
34541 if (!value) return "{}";
34542 std::string result;
34543 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
34544 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
34545 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
34546 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
34547 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
34548 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
34549 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
34550 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
34551 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
34552 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
34553 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
34554 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
34555 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
34556 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
34557 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
34558 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34559 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034560 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034561 return "{" + result.substr(0, result.size() - 3) + "}";
34562 }
34563
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034564 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034565 {
34566 switch (value)
34567 {
34568 case CommandPoolCreateFlagBits::eTransient: return "Transient";
34569 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
34570 default: return "invalid";
34571 }
34572 }
34573
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034574 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034575 {
34576 if (!value) return "{}";
34577 std::string result;
34578 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
34579 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
34580 return "{" + result.substr(0, result.size() - 3) + "}";
34581 }
34582
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034583 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034584 {
34585 switch (value)
34586 {
34587 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
34588 default: return "invalid";
34589 }
34590 }
34591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034592 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034593 {
34594 if (!value) return "{}";
34595 std::string result;
34596 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34597 return "{" + result.substr(0, result.size() - 3) + "}";
34598 }
34599
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034600 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034601 {
34602 switch (value)
34603 {
34604 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
34605 default: return "invalid";
34606 }
34607 }
34608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034609 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034610 {
34611 if (!value) return "{}";
34612 std::string result;
34613 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34614 return "{" + result.substr(0, result.size() - 3) + "}";
34615 }
34616
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034617 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034618 {
34619 switch (value)
34620 {
34621 case SampleCountFlagBits::e1: return "1";
34622 case SampleCountFlagBits::e2: return "2";
34623 case SampleCountFlagBits::e4: return "4";
34624 case SampleCountFlagBits::e8: return "8";
34625 case SampleCountFlagBits::e16: return "16";
34626 case SampleCountFlagBits::e32: return "32";
34627 case SampleCountFlagBits::e64: return "64";
34628 default: return "invalid";
34629 }
34630 }
34631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034632 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034633 {
34634 if (!value) return "{}";
34635 std::string result;
34636 if (value & SampleCountFlagBits::e1) result += "1 | ";
34637 if (value & SampleCountFlagBits::e2) result += "2 | ";
34638 if (value & SampleCountFlagBits::e4) result += "4 | ";
34639 if (value & SampleCountFlagBits::e8) result += "8 | ";
34640 if (value & SampleCountFlagBits::e16) result += "16 | ";
34641 if (value & SampleCountFlagBits::e32) result += "32 | ";
34642 if (value & SampleCountFlagBits::e64) result += "64 | ";
34643 return "{" + result.substr(0, result.size() - 3) + "}";
34644 }
34645
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034646 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034647 {
34648 switch (value)
34649 {
34650 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
34651 default: return "invalid";
34652 }
34653 }
34654
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034655 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034656 {
34657 if (!value) return "{}";
34658 std::string result;
34659 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
34660 return "{" + result.substr(0, result.size() - 3) + "}";
34661 }
34662
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034663 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034664 {
34665 switch (value)
34666 {
34667 case StencilFaceFlagBits::eFront: return "Front";
34668 case StencilFaceFlagBits::eBack: return "Back";
34669 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
34670 default: return "invalid";
34671 }
34672 }
34673
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034674 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034675 {
34676 if (!value) return "{}";
34677 std::string result;
34678 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
34679 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
34680 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
34681 return "{" + result.substr(0, result.size() - 3) + "}";
34682 }
34683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034684 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034685 {
34686 switch (value)
34687 {
34688 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
34689 default: return "invalid";
34690 }
34691 }
34692
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034693 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034694 {
34695 if (!value) return "{}";
34696 std::string result;
34697 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
34698 return "{" + result.substr(0, result.size() - 3) + "}";
34699 }
34700
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034701 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034702 {
34703 switch (value)
34704 {
34705 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070034706 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
34707 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034708 default: return "invalid";
34709 }
34710 }
34711
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034712 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034713 {
34714 if (!value) return "{}";
34715 std::string result;
34716 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070034717 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
34718 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034719 return "{" + result.substr(0, result.size() - 3) + "}";
34720 }
34721
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034722 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034723 {
34724 switch (value)
34725 {
34726 case PresentModeKHR::eImmediate: return "Immediate";
34727 case PresentModeKHR::eMailbox: return "Mailbox";
34728 case PresentModeKHR::eFifo: return "Fifo";
34729 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034730 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
34731 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034732 default: return "invalid";
34733 }
34734 }
34735
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034736 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034737 {
34738 switch (value)
34739 {
34740 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060034741 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
34742 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
34743 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
34744 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
34745 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
34746 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
34747 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
34748 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
34749 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
34750 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
34751 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
34752 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
34753 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060034754 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034755 default: return "invalid";
34756 }
34757 }
34758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034759 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034760 {
34761 switch (value)
34762 {
34763 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
34764 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
34765 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
34766 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
34767 default: return "invalid";
34768 }
34769 }
34770
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034771 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034772 {
34773 if (!value) return "{}";
34774 std::string result;
34775 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34776 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
34777 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
34778 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
34779 return "{" + result.substr(0, result.size() - 3) + "}";
34780 }
34781
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034782 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034783 {
34784 switch (value)
34785 {
34786 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
34787 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
34788 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
34789 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
34790 default: return "invalid";
34791 }
34792 }
34793
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034794 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034795 {
34796 if (!value) return "{}";
34797 std::string result;
34798 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34799 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
34800 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
34801 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
34802 return "{" + result.substr(0, result.size() - 3) + "}";
34803 }
34804
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034805 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034806 {
34807 switch (value)
34808 {
34809 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
34810 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
34811 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
34812 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
34813 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
34814 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
34815 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
34816 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
34817 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
34818 default: return "invalid";
34819 }
34820 }
34821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034822 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034823 {
34824 if (!value) return "{}";
34825 std::string result;
34826 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
34827 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
34828 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
34829 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
34830 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
34831 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
34832 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
34833 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
34834 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
34835 return "{" + result.substr(0, result.size() - 3) + "}";
34836 }
34837
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034838 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034839 {
34840 switch (value)
34841 {
34842 case DebugReportFlagBitsEXT::eInformation: return "Information";
34843 case DebugReportFlagBitsEXT::eWarning: return "Warning";
34844 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
34845 case DebugReportFlagBitsEXT::eError: return "Error";
34846 case DebugReportFlagBitsEXT::eDebug: return "Debug";
34847 default: return "invalid";
34848 }
34849 }
34850
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034851 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034852 {
34853 if (!value) return "{}";
34854 std::string result;
34855 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
34856 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
34857 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
34858 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
34859 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
34860 return "{" + result.substr(0, result.size() - 3) + "}";
34861 }
34862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034863 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034864 {
34865 switch (value)
34866 {
34867 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
34868 case DebugReportObjectTypeEXT::eInstance: return "Instance";
34869 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
34870 case DebugReportObjectTypeEXT::eDevice: return "Device";
34871 case DebugReportObjectTypeEXT::eQueue: return "Queue";
34872 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
34873 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
34874 case DebugReportObjectTypeEXT::eFence: return "Fence";
34875 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
34876 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
34877 case DebugReportObjectTypeEXT::eImage: return "Image";
34878 case DebugReportObjectTypeEXT::eEvent: return "Event";
34879 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
34880 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
34881 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
34882 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
34883 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
34884 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
34885 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
34886 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
34887 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
34888 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
34889 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
34890 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
34891 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
34892 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
34893 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
34894 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034895 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034896 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
34897 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
34898 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
34899 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034900 case DebugReportObjectTypeEXT::eValidationCache: return "ValidationCache";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034901 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034902 case DebugReportObjectTypeEXT::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034903 default: return "invalid";
34904 }
34905 }
34906
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034907 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034908 {
34909 switch (value)
34910 {
34911 case RasterizationOrderAMD::eStrict: return "Strict";
34912 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
34913 default: return "invalid";
34914 }
34915 }
34916
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034917 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034918 {
34919 switch (value)
34920 {
34921 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
34922 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34923 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
34924 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
34925 default: return "invalid";
34926 }
34927 }
34928
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034929 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034930 {
34931 if (!value) return "{}";
34932 std::string result;
34933 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
34934 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34935 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
34936 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
34937 return "{" + result.substr(0, result.size() - 3) + "}";
34938 }
34939
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034940 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034941 {
34942 switch (value)
34943 {
34944 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
34945 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
34946 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
34947 default: return "invalid";
34948 }
34949 }
34950
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034951 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034952 {
34953 if (!value) return "{}";
34954 std::string result;
34955 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
34956 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
34957 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
34958 return "{" + result.substr(0, result.size() - 3) + "}";
34959 }
34960
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034961 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060034962 {
34963 switch (value)
34964 {
34965 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034966 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060034967 default: return "invalid";
34968 }
34969 }
34970
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034971 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
34972 {
34973 switch (value)
34974 {
34975 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
34976 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
34977 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
34978 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
34979 default: return "invalid";
34980 }
34981 }
34982
34983 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
34984 {
34985 if (!value) return "{}";
34986 std::string result;
34987 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
34988 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
34989 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
34990 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
34991 return "{" + result.substr(0, result.size() - 3) + "}";
34992 }
34993
34994 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
34995 {
34996 switch (value)
34997 {
34998 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
34999 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
35000 default: return "invalid";
35001 }
35002 }
35003
35004 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
35005 {
35006 if (!value) return "{}";
35007 std::string result;
35008 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
35009 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
35010 return "{" + result.substr(0, result.size() - 3) + "}";
35011 }
35012
35013 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
35014 {
35015 switch (value)
35016 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060035017 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
35018 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
35019 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
35020 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
35021 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
35022 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
35023 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
35024 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070035025 default: return "invalid";
35026 }
35027 }
35028
35029 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
35030 {
35031 switch (value)
35032 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060035033 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
35034 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
35035 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
35036 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
35037 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070035038 default: return "invalid";
35039 }
35040 }
35041
Mark Young0f183a82017-02-28 09:58:04 -070035042 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
35043 {
35044 switch (value)
35045 {
35046 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
35047 default: return "invalid";
35048 }
35049 }
35050
35051 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
35052 {
35053 if (!value) return "{}";
35054 std::string result;
35055 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
35056 return "{" + result.substr(0, result.size() - 3) + "}";
35057 }
35058
Mark Youngabc2d6e2017-07-07 07:59:56 -060035059 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035060 {
35061 switch (value)
35062 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035063 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
35064 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
35065 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
35066 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
35067 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
35068 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
35069 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Lobodzinski417d5702017-11-27 12:00:45 -070035070 case ExternalMemoryHandleTypeFlagBitsKHR::eDmaBufEXT: return "DmaBufEXT";
35071 case ExternalMemoryHandleTypeFlagBitsKHR::eHostAllocationEXT: return "HostAllocationEXT";
35072 case ExternalMemoryHandleTypeFlagBitsKHR::eHostMappedForeignMemoryEXT: return "HostMappedForeignMemoryEXT";
Mark Young0f183a82017-02-28 09:58:04 -070035073 default: return "invalid";
35074 }
35075 }
35076
Mark Youngabc2d6e2017-07-07 07:59:56 -060035077 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035078 {
35079 if (!value) return "{}";
35080 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035081 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
35082 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
35083 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
35084 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
35085 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
35086 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
35087 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Lobodzinski417d5702017-11-27 12:00:45 -070035088 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eDmaBufEXT) result += "DmaBufEXT | ";
35089 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eHostAllocationEXT) result += "HostAllocationEXT | ";
35090 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eHostMappedForeignMemoryEXT) result += "HostMappedForeignMemoryEXT | ";
Mark Young0f183a82017-02-28 09:58:04 -070035091 return "{" + result.substr(0, result.size() - 3) + "}";
35092 }
35093
Mark Youngabc2d6e2017-07-07 07:59:56 -060035094 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035095 {
35096 switch (value)
35097 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035098 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
35099 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
35100 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070035101 default: return "invalid";
35102 }
35103 }
35104
Mark Youngabc2d6e2017-07-07 07:59:56 -060035105 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035106 {
35107 if (!value) return "{}";
35108 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035109 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
35110 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
35111 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070035112 return "{" + result.substr(0, result.size() - 3) + "}";
35113 }
35114
Mark Youngabc2d6e2017-07-07 07:59:56 -060035115 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035116 {
35117 switch (value)
35118 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035119 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
35120 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
35121 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
35122 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
35123 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070035124 default: return "invalid";
35125 }
35126 }
35127
Mark Youngabc2d6e2017-07-07 07:59:56 -060035128 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035129 {
35130 if (!value) return "{}";
35131 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035132 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
35133 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
35134 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
35135 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
35136 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070035137 return "{" + result.substr(0, result.size() - 3) + "}";
35138 }
35139
Mark Youngabc2d6e2017-07-07 07:59:56 -060035140 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035141 {
35142 switch (value)
35143 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035144 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
35145 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070035146 default: return "invalid";
35147 }
35148 }
35149
Mark Youngabc2d6e2017-07-07 07:59:56 -060035150 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035151 {
35152 if (!value) return "{}";
35153 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035154 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
35155 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
35156 return "{" + result.substr(0, result.size() - 3) + "}";
35157 }
35158
35159 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
35160 {
35161 switch (value)
35162 {
35163 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
35164 default: return "invalid";
35165 }
35166 }
35167
35168 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
35169 {
35170 if (!value) return "{}";
35171 std::string result;
35172 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
35173 return "{" + result.substr(0, result.size() - 3) + "}";
35174 }
35175
35176 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
35177 {
35178 switch (value)
35179 {
35180 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
35181 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
35182 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
35183 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
35184 default: return "invalid";
35185 }
35186 }
35187
35188 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
35189 {
35190 if (!value) return "{}";
35191 std::string result;
35192 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
35193 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
35194 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
35195 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
35196 return "{" + result.substr(0, result.size() - 3) + "}";
35197 }
35198
35199 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
35200 {
35201 switch (value)
35202 {
35203 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
35204 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
35205 default: return "invalid";
35206 }
35207 }
35208
35209 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
35210 {
35211 if (!value) return "{}";
35212 std::string result;
35213 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
35214 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
35215 return "{" + result.substr(0, result.size() - 3) + "}";
35216 }
35217
35218 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
35219 {
35220 switch (value)
35221 {
35222 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
35223 default: return "invalid";
35224 }
35225 }
35226
35227 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
35228 {
35229 if (!value) return "{}";
35230 std::string result;
35231 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070035232 return "{" + result.substr(0, result.size() - 3) + "}";
35233 }
35234
Mark Young39389872017-01-19 21:10:49 -070035235 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
35236 {
35237 switch (value)
35238 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060035239 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070035240 default: return "invalid";
35241 }
35242 }
35243
35244 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
35245 {
35246 if (!value) return "{}";
35247 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060035248 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070035249 return "{" + result.substr(0, result.size() - 3) + "}";
35250 }
35251
35252 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
35253 {
35254 switch (value)
35255 {
35256 case DisplayPowerStateEXT::eOff: return "Off";
35257 case DisplayPowerStateEXT::eSuspend: return "Suspend";
35258 case DisplayPowerStateEXT::eOn: return "On";
35259 default: return "invalid";
35260 }
35261 }
35262
35263 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
35264 {
35265 switch (value)
35266 {
35267 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
35268 default: return "invalid";
35269 }
35270 }
35271
35272 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
35273 {
35274 switch (value)
35275 {
35276 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
35277 default: return "invalid";
35278 }
35279 }
35280
Mark Young0f183a82017-02-28 09:58:04 -070035281 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
35282 {
35283 switch (value)
35284 {
35285 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
35286 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
35287 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
35288 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
35289 default: return "invalid";
35290 }
35291 }
35292
35293 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
35294 {
35295 if (!value) return "{}";
35296 std::string result;
35297 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
35298 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
35299 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
35300 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
35301 return "{" + result.substr(0, result.size() - 3) + "}";
35302 }
35303
35304 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
35305 {
35306 switch (value)
35307 {
35308 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
35309 default: return "invalid";
35310 }
35311 }
35312
35313 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
35314 {
35315 if (!value) return "{}";
35316 std::string result;
35317 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
35318 return "{" + result.substr(0, result.size() - 3) + "}";
35319 }
35320
35321 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
35322 {
35323 switch (value)
35324 {
35325 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
35326 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
35327 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
35328 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
35329 default: return "invalid";
35330 }
35331 }
35332
35333 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
35334 {
35335 if (!value) return "{}";
35336 std::string result;
35337 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
35338 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
35339 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
35340 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
35341 return "{" + result.substr(0, result.size() - 3) + "}";
35342 }
35343
35344 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
35345 {
35346 switch (value)
35347 {
35348 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
35349 default: return "invalid";
35350 }
35351 }
35352
35353 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
35354 {
35355 if (!value) return "{}";
35356 std::string result;
35357 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
35358 return "{" + result.substr(0, result.size() - 3) + "}";
35359 }
35360
35361 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
35362 {
35363 switch (value)
35364 {
35365 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
35366 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
35367 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
35368 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
35369 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
35370 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
35371 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
35372 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
35373 default: return "invalid";
35374 }
35375 }
35376
35377 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
35378 {
35379 switch (value)
35380 {
35381 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
35382 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
35383 default: return "invalid";
35384 }
35385 }
35386
35387 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
35388 {
35389 switch (value)
35390 {
35391 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
35392 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
35393 default: return "invalid";
35394 }
35395 }
35396
35397 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
35398 {
35399 if (!value) return "{}";
35400 std::string result;
35401 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
35402 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
35403 return "{" + result.substr(0, result.size() - 3) + "}";
35404 }
35405
Lenny Komowb79f04a2017-09-18 17:07:00 -060035406 VULKAN_HPP_INLINE std::string to_string(PointClippingBehaviorKHR value)
35407 {
35408 switch (value)
35409 {
35410 case PointClippingBehaviorKHR::eAllClipPlanes: return "AllClipPlanes";
35411 case PointClippingBehaviorKHR::eUserClipPlanesOnly: return "UserClipPlanesOnly";
35412 default: return "invalid";
35413 }
35414 }
35415
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035416 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
35417 {
35418 switch (value)
35419 {
35420 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
35421 case SamplerReductionModeEXT::eMin: return "Min";
35422 case SamplerReductionModeEXT::eMax: return "Max";
35423 default: return "invalid";
35424 }
35425 }
35426
Lenny Komowb79f04a2017-09-18 17:07:00 -060035427 VULKAN_HPP_INLINE std::string to_string(TessellationDomainOriginKHR value)
35428 {
35429 switch (value)
35430 {
35431 case TessellationDomainOriginKHR::eUpperLeft: return "UpperLeft";
35432 case TessellationDomainOriginKHR::eLowerLeft: return "LowerLeft";
35433 default: return "invalid";
35434 }
35435 }
35436
35437 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversionKHR value)
35438 {
35439 switch (value)
35440 {
35441 case SamplerYcbcrModelConversionKHR::eRgbIdentity: return "RgbIdentity";
35442 case SamplerYcbcrModelConversionKHR::eYcbcrIdentity: return "YcbcrIdentity";
35443 case SamplerYcbcrModelConversionKHR::eYcbcr709: return "Ycbcr709";
35444 case SamplerYcbcrModelConversionKHR::eYcbcr601: return "Ycbcr601";
35445 case SamplerYcbcrModelConversionKHR::eYcbcr2020: return "Ycbcr2020";
35446 default: return "invalid";
35447 }
35448 }
35449
35450 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRangeKHR value)
35451 {
35452 switch (value)
35453 {
35454 case SamplerYcbcrRangeKHR::eItuFull: return "ItuFull";
35455 case SamplerYcbcrRangeKHR::eItuNarrow: return "ItuNarrow";
35456 default: return "invalid";
35457 }
35458 }
35459
35460 VULKAN_HPP_INLINE std::string to_string(ChromaLocationKHR value)
35461 {
35462 switch (value)
35463 {
35464 case ChromaLocationKHR::eCositedEven: return "CositedEven";
35465 case ChromaLocationKHR::eMidpoint: return "Midpoint";
35466 default: return "invalid";
35467 }
35468 }
35469
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035470 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
35471 {
35472 switch (value)
35473 {
35474 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
35475 case BlendOverlapEXT::eDisjoint: return "Disjoint";
35476 case BlendOverlapEXT::eConjoint: return "Conjoint";
35477 default: return "invalid";
35478 }
35479 }
35480
35481 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
35482 {
35483 switch (value)
35484 {
35485 case CoverageModulationModeNV::eNone: return "None";
35486 case CoverageModulationModeNV::eRgb: return "Rgb";
35487 case CoverageModulationModeNV::eAlpha: return "Alpha";
35488 case CoverageModulationModeNV::eRgba: return "Rgba";
35489 default: return "invalid";
35490 }
35491 }
35492
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060035493 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
35494 {
35495 switch (value)
35496 {
35497 case ValidationCacheHeaderVersionEXT::eOne: return "One";
35498 default: return "invalid";
35499 }
35500 }
35501
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060035502 VULKAN_HPP_INLINE std::string to_string(ShaderInfoTypeAMD value)
35503 {
35504 switch (value)
35505 {
35506 case ShaderInfoTypeAMD::eStatistics: return "Statistics";
35507 case ShaderInfoTypeAMD::eBinary: return "Binary";
35508 case ShaderInfoTypeAMD::eDisassembly: return "Disassembly";
35509 default: return "invalid";
35510 }
35511 }
35512
35513 VULKAN_HPP_INLINE std::string to_string(QueueGlobalPriorityEXT value)
35514 {
35515 switch (value)
35516 {
35517 case QueueGlobalPriorityEXT::eLow: return "Low";
35518 case QueueGlobalPriorityEXT::eMedium: return "Medium";
35519 case QueueGlobalPriorityEXT::eHigh: return "High";
35520 case QueueGlobalPriorityEXT::eRealtime: return "Realtime";
35521 default: return "invalid";
35522 }
35523 }
35524
Mark Lobodzinskidbe7dce2018-01-08 08:17:24 -070035525 VULKAN_HPP_INLINE std::string to_string(ConservativeRasterizationModeEXT value)
35526 {
35527 switch (value)
35528 {
35529 case ConservativeRasterizationModeEXT::eDisabled: return "Disabled";
35530 case ConservativeRasterizationModeEXT::eOverestimate: return "Overestimate";
35531 case ConservativeRasterizationModeEXT::eUnderestimate: return "Underestimate";
35532 default: return "invalid";
35533 }
35534 }
35535
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060035536} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060035537
35538#endif