blob: 0a7b9cd86dd4b93adec4770aecce9ab424734cd2 [file] [log] [blame]
Mark Young39389872017-01-19 21:10:49 -07001// Copyright (c) 2015-2017 The Khronos Group Inc.
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and/or associated documentation files (the
5// "Materials"), to deal in the Materials without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Materials, and to
8// permit persons to whom the Materials are furnished to do so, subject to
9// the following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Materials.
13//
14// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
21
22// This header is generated from the Khronos Vulkan XML API Registry.
23
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024#ifndef VULKAN_HPP
25#define VULKAN_HPP
26
27#include <algorithm>
28#include <array>
29#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031#include <cstdint>
32#include <cstring>
33#include <initializer_list>
34#include <string>
35#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070036#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060037#include <type_traits>
38#include <vulkan/vulkan.h>
39#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
40# include <memory>
41# include <vector>
42#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060043static_assert( VK_HEADER_VERSION == 51 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060044
45// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
46// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020047#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 -070048# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
49# define VULKAN_HPP_TYPESAFE_CONVERSION
50# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060051#endif
52
53#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
54# if defined(__clang__)
55# if __has_feature(cxx_unrestricted_unions)
56# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
57# endif
58# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060059# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060060# if 40600 <= GCC_VERSION
61# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
62# endif
63# elif defined(_MSC_VER)
64# if 1900 <= _MSC_VER
65# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
66# endif
67# endif
68#endif
69
Mark Lobodzinski2d589822016-12-12 09:44:34 -070070#if !defined(VULKAN_HPP_INLINE)
71# if defined(__clang___)
72# if __has_attribute(always_inline)
73# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
74# else
75# define VULKAN_HPP_INLINE inline
76# endif
77# elif defined(__GNUC__)
78# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
79# elif defined(_MSC_VER)
80# define VULKAN_HPP_INLINE __forceinline
81# else
82# define VULKAN_HPP_INLINE inline
83# endif
84#endif
85
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070086#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
87# define VULKAN_HPP_TYPESAFE_EXPLICIT
88#else
89# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
90#endif
91
Lenny Komowbed9b5c2016-08-11 11:23:15 -060092namespace vk
93{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060094
Mark Lobodzinski2d589822016-12-12 09:44:34 -070095 template <typename FlagBitsType> struct FlagTraits
96 {
97 enum { allFlags = 0 };
98 };
99
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600100 template <typename BitType, typename MaskType = VkFlags>
101 class Flags
102 {
103 public:
104 Flags()
105 : m_mask(0)
106 {
107 }
108
109 Flags(BitType bit)
110 : m_mask(static_cast<MaskType>(bit))
111 {
112 }
113
114 Flags(Flags<BitType> const& rhs)
115 : m_mask(rhs.m_mask)
116 {
117 }
118
119 Flags<BitType> & operator=(Flags<BitType> const& rhs)
120 {
121 m_mask = rhs.m_mask;
122 return *this;
123 }
124
125 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
126 {
127 m_mask |= rhs.m_mask;
128 return *this;
129 }
130
131 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
132 {
133 m_mask &= rhs.m_mask;
134 return *this;
135 }
136
137 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
138 {
139 m_mask ^= rhs.m_mask;
140 return *this;
141 }
142
143 Flags<BitType> operator|(Flags<BitType> const& rhs) const
144 {
145 Flags<BitType> result(*this);
146 result |= rhs;
147 return result;
148 }
149
150 Flags<BitType> operator&(Flags<BitType> const& rhs) const
151 {
152 Flags<BitType> result(*this);
153 result &= rhs;
154 return result;
155 }
156
157 Flags<BitType> operator^(Flags<BitType> const& rhs) const
158 {
159 Flags<BitType> result(*this);
160 result ^= rhs;
161 return result;
162 }
163
164 bool operator!() const
165 {
166 return !m_mask;
167 }
168
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700169 Flags<BitType> operator~() const
170 {
171 Flags<BitType> result(*this);
172 result.m_mask ^= FlagTraits<BitType>::allFlags;
173 return result;
174 }
175
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600176 bool operator==(Flags<BitType> const& rhs) const
177 {
178 return m_mask == rhs.m_mask;
179 }
180
181 bool operator!=(Flags<BitType> const& rhs) const
182 {
183 return m_mask != rhs.m_mask;
184 }
185
186 explicit operator bool() const
187 {
188 return !!m_mask;
189 }
190
191 explicit operator MaskType() const
192 {
193 return m_mask;
194 }
195
196 private:
197 MaskType m_mask;
198 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600199
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600200 template <typename BitType>
201 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
202 {
203 return flags | bit;
204 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600205
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600206 template <typename BitType>
207 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
208 {
209 return flags & bit;
210 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600211
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600212 template <typename BitType>
213 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
214 {
215 return flags ^ bit;
216 }
217
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700218
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600219 template <typename RefType>
220 class Optional
221 {
222 public:
223 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700224 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600225 Optional(std::nullptr_t) { m_ptr = nullptr; }
226
227 operator RefType*() const { return m_ptr; }
228 RefType const* operator->() const { return m_ptr; }
229 explicit operator bool() const { return !!m_ptr; }
230
231 private:
232 RefType *m_ptr;
233 };
234
235#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
236 template <typename T>
237 class ArrayProxy
238 {
239 public:
240 ArrayProxy(std::nullptr_t)
241 : m_count(0)
242 , m_ptr(nullptr)
243 {}
244
245 ArrayProxy(T & ptr)
246 : m_count(1)
247 , m_ptr(&ptr)
248 {}
249
250 ArrayProxy(uint32_t count, T * ptr)
251 : m_count(count)
252 , m_ptr(ptr)
253 {}
254
255 template <size_t N>
256 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
257 : m_count(N)
258 , m_ptr(data.data())
259 {}
260
261 template <size_t N>
262 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
263 : m_count(N)
264 , m_ptr(data.data())
265 {}
266
267 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
268 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
269 : m_count(static_cast<uint32_t>(data.size()))
270 , m_ptr(data.data())
271 {}
272
273 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
274 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
275 : m_count(static_cast<uint32_t>(data.size()))
276 , m_ptr(data.data())
277 {}
278
279 ArrayProxy(std::initializer_list<T> const& data)
280 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
281 , m_ptr(data.begin())
282 {}
283
284 const T * begin() const
285 {
286 return m_ptr;
287 }
288
289 const T * end() const
290 {
291 return m_ptr + m_count;
292 }
293
294 const T & front() const
295 {
296 assert(m_count && m_ptr);
297 return *m_ptr;
298 }
299
300 const T & back() const
301 {
302 assert(m_count && m_ptr);
303 return *(m_ptr + m_count - 1);
304 }
305
306 bool empty() const
307 {
308 return (m_count == 0);
309 }
310
311 uint32_t size() const
312 {
313 return m_count;
314 }
315
316 T * data() const
317 {
318 return m_ptr;
319 }
320
321 private:
322 uint32_t m_count;
323 T * m_ptr;
324 };
325#endif
326
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700327#if defined(VULKAN_HPP_NO_EXCEPTIONS) && !defined(VULKAN_HPP_NO_SMART_HANDLE)
328# define VULKAN_HPP_NO_SMART_HANDLE
329#endif
330
331#ifndef VULKAN_HPP_NO_SMART_HANDLE
332 template <typename Type, typename Deleter>
333 class UniqueHandle
334 {
335 public:
336 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
337 : m_value( value )
338 , m_deleter( deleter )
339 {}
340
341 UniqueHandle( UniqueHandle const& ) = delete;
342
343 UniqueHandle( UniqueHandle && other )
344 : m_value( other.release() )
345 , m_deleter( std::move( other.m_deleter ) )
346 {}
347
348 ~UniqueHandle()
349 {
350 destroy();
351 }
352
353 UniqueHandle & operator=( UniqueHandle const& ) = delete;
354
355 UniqueHandle & operator=( UniqueHandle && other )
356 {
357 reset( other.release() );
358 m_deleter = std::move( other.m_deleter );
359 return *this;
360 }
361
362 explicit operator bool() const
363 {
364 return m_value.operator bool();
365 }
366
367 Type const* operator->() const
368 {
369 return &m_value;
370 }
371
372 Type const& operator*() const
373 {
374 return m_value;
375 }
376
377 Type get() const
378 {
379 return m_value;
380 }
381
382 Deleter & getDeleter()
383 {
384 return m_deleter;
385 }
386
387 Deleter const& getDeleter() const
388 {
389 return m_deleter;
390 }
391
392 void reset( Type const& value = Type() )
393 {
394 if ( m_value != value )
395 {
396 destroy();
397 m_value = value;
398 }
399 }
400
401 Type release()
402 {
403 Type value = m_value;
404 m_value = nullptr;
405 return value;
406 }
407
408 void swap( UniqueHandle<Type, Deleter> & rhs )
409 {
410 std::swap(m_value, rhs.m_value);
411 std::swap(m_deleter, rhs.m_deleter);
412 }
413
414 private:
415 void destroy()
416 {
417 if ( m_value )
418 {
419 m_deleter( m_value );
420 }
421 }
422
423 private:
424 Type m_value;
425 Deleter m_deleter;
426 };
427
428 template <typename Type, typename Deleter>
429 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
430 {
431 lhs.swap( rhs );
432 }
433#endif
434
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600435 enum class Result
436 {
437 eSuccess = VK_SUCCESS,
438 eNotReady = VK_NOT_READY,
439 eTimeout = VK_TIMEOUT,
440 eEventSet = VK_EVENT_SET,
441 eEventReset = VK_EVENT_RESET,
442 eIncomplete = VK_INCOMPLETE,
443 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
444 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
445 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
446 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
447 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
448 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
449 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
450 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
451 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
452 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
453 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600454 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600455 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
456 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
457 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
458 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
459 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
460 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700461 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700462 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
463 eErrorInvalidExternalHandleKHX = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600464 };
465
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700466 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600467 {
468 switch (value)
469 {
470 case Result::eSuccess: return "Success";
471 case Result::eNotReady: return "NotReady";
472 case Result::eTimeout: return "Timeout";
473 case Result::eEventSet: return "EventSet";
474 case Result::eEventReset: return "EventReset";
475 case Result::eIncomplete: return "Incomplete";
476 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
477 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
478 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
479 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
480 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
481 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
482 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
483 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
484 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
485 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
486 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600487 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600488 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
489 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
490 case Result::eSuboptimalKHR: return "SuboptimalKHR";
491 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
492 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
493 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
494 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700495 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Young0f183a82017-02-28 09:58:04 -0700496 case Result::eErrorInvalidExternalHandleKHX: return "ErrorInvalidExternalHandleKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600497 default: return "invalid";
498 }
499 }
500
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600501
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600502#if defined(_MSC_VER) && (_MSC_VER == 1800)
503# define noexcept _NOEXCEPT
504#endif
505
506 class ErrorCategoryImpl : public std::error_category
507 {
508 public:
509 virtual const char* name() const noexcept override { return "vk::Result"; }
510 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
511 };
512
513#if defined(_MSC_VER) && (_MSC_VER == 1800)
514# undef noexcept
515#endif
516
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700517 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600518 {
519 static ErrorCategoryImpl instance;
520 return instance;
521 }
522
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700523 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600524 {
525 return std::error_code(static_cast<int>(e), errorCategory());
526 }
527
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700528 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600529 {
530 return std::error_condition(static_cast<int>(e), errorCategory());
531 }
532
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600533#if defined(_MSC_VER) && (_MSC_VER == 1800)
534# define noexcept _NOEXCEPT
535#endif
536
537 class Error
538 {
539 public:
540 virtual ~Error() = default;
541
542 virtual const char* what() const noexcept = 0;
543 };
544
545 class LogicError : public Error, public std::logic_error
546 {
547 public:
548 explicit LogicError( const std::string& what )
549 : Error(), std::logic_error(what) {}
550 explicit LogicError( char const * what )
551 : Error(), std::logic_error(what) {}
552 virtual ~LogicError() = default;
553
554 virtual const char* what() const noexcept { return std::logic_error::what(); }
555 };
556
557 class SystemError : public Error, public std::system_error
558 {
559 public:
560 SystemError( std::error_code ec )
561 : Error(), std::system_error(ec) {}
562 SystemError( std::error_code ec, std::string const& what )
563 : Error(), std::system_error(ec, what) {}
564 SystemError( std::error_code ec, char const * what )
565 : Error(), std::system_error(ec, what) {}
566 SystemError( int ev, std::error_category const& ecat )
567 : Error(), std::system_error(ev, ecat) {}
568 SystemError( int ev, std::error_category const& ecat, std::string const& what)
569 : Error(), std::system_error(ev, ecat, what) {}
570 SystemError( int ev, std::error_category const& ecat, char const * what)
571 : Error(), std::system_error(ev, ecat, what) {}
572 virtual ~SystemError() = default;
573
574 virtual const char* what() const noexcept { return std::system_error::what(); }
575 };
576
577#if defined(_MSC_VER) && (_MSC_VER == 1800)
578# undef noexcept
579#endif
580
581 class OutOfHostMemoryError : public SystemError
582 {
583 public:
584 OutOfHostMemoryError( std::string const& message )
585 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
586 OutOfHostMemoryError( char const * message )
587 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
588 };
589 class OutOfDeviceMemoryError : public SystemError
590 {
591 public:
592 OutOfDeviceMemoryError( std::string const& message )
593 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
594 OutOfDeviceMemoryError( char const * message )
595 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
596 };
597 class InitializationFailedError : public SystemError
598 {
599 public:
600 InitializationFailedError( std::string const& message )
601 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
602 InitializationFailedError( char const * message )
603 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
604 };
605 class DeviceLostError : public SystemError
606 {
607 public:
608 DeviceLostError( std::string const& message )
609 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
610 DeviceLostError( char const * message )
611 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
612 };
613 class MemoryMapFailedError : public SystemError
614 {
615 public:
616 MemoryMapFailedError( std::string const& message )
617 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
618 MemoryMapFailedError( char const * message )
619 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
620 };
621 class LayerNotPresentError : public SystemError
622 {
623 public:
624 LayerNotPresentError( std::string const& message )
625 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
626 LayerNotPresentError( char const * message )
627 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
628 };
629 class ExtensionNotPresentError : public SystemError
630 {
631 public:
632 ExtensionNotPresentError( std::string const& message )
633 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
634 ExtensionNotPresentError( char const * message )
635 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
636 };
637 class FeatureNotPresentError : public SystemError
638 {
639 public:
640 FeatureNotPresentError( std::string const& message )
641 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
642 FeatureNotPresentError( char const * message )
643 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
644 };
645 class IncompatibleDriverError : public SystemError
646 {
647 public:
648 IncompatibleDriverError( std::string const& message )
649 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
650 IncompatibleDriverError( char const * message )
651 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
652 };
653 class TooManyObjectsError : public SystemError
654 {
655 public:
656 TooManyObjectsError( std::string const& message )
657 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
658 TooManyObjectsError( char const * message )
659 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
660 };
661 class FormatNotSupportedError : public SystemError
662 {
663 public:
664 FormatNotSupportedError( std::string const& message )
665 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
666 FormatNotSupportedError( char const * message )
667 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
668 };
669 class FragmentedPoolError : public SystemError
670 {
671 public:
672 FragmentedPoolError( std::string const& message )
673 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
674 FragmentedPoolError( char const * message )
675 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
676 };
677 class SurfaceLostKHRError : public SystemError
678 {
679 public:
680 SurfaceLostKHRError( std::string const& message )
681 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
682 SurfaceLostKHRError( char const * message )
683 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
684 };
685 class NativeWindowInUseKHRError : public SystemError
686 {
687 public:
688 NativeWindowInUseKHRError( std::string const& message )
689 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
690 NativeWindowInUseKHRError( char const * message )
691 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
692 };
693 class OutOfDateKHRError : public SystemError
694 {
695 public:
696 OutOfDateKHRError( std::string const& message )
697 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
698 OutOfDateKHRError( char const * message )
699 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
700 };
701 class IncompatibleDisplayKHRError : public SystemError
702 {
703 public:
704 IncompatibleDisplayKHRError( std::string const& message )
705 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
706 IncompatibleDisplayKHRError( char const * message )
707 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
708 };
709 class ValidationFailedEXTError : public SystemError
710 {
711 public:
712 ValidationFailedEXTError( std::string const& message )
713 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
714 ValidationFailedEXTError( char const * message )
715 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
716 };
717 class InvalidShaderNVError : public SystemError
718 {
719 public:
720 InvalidShaderNVError( std::string const& message )
721 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
722 InvalidShaderNVError( char const * message )
723 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
724 };
725 class OutOfPoolMemoryKHRError : public SystemError
726 {
727 public:
728 OutOfPoolMemoryKHRError( std::string const& message )
729 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
730 OutOfPoolMemoryKHRError( char const * message )
731 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
732 };
733 class InvalidExternalHandleKHXError : public SystemError
734 {
735 public:
736 InvalidExternalHandleKHXError( std::string const& message )
737 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHX ), message ) {}
738 InvalidExternalHandleKHXError( char const * message )
739 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHX ), message ) {}
740 };
741
742 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
743 {
744 assert ( static_cast<long long int>(result) < 0 );
745 switch ( result )
746 {
747 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
748 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
749 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
750 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
751 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
752 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
753 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
754 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
755 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
756 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
757 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
758 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
759 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
760 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
761 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
762 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
763 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
764 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
765 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
766 case Result::eErrorInvalidExternalHandleKHX: throw InvalidExternalHandleKHXError ( message );
767 default: throw SystemError( make_error_code( result ) );
768 }
769 }
770
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600771} // namespace vk
772
773namespace std
774{
775 template <>
776 struct is_error_code_enum<vk::Result> : public true_type
777 {};
778}
779
780namespace vk
781{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600782
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600783 template <typename T>
784 struct ResultValue
785 {
786 ResultValue( Result r, T & v )
787 : result( r )
788 , value( v )
789 {}
790
791 Result result;
792 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700793
794 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600795 };
796
797 template <typename T>
798 struct ResultValueType
799 {
800#ifdef VULKAN_HPP_NO_EXCEPTIONS
801 typedef ResultValue<T> type;
802#else
803 typedef T type;
804#endif
805 };
806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600807 template <>
808 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600809 {
810#ifdef VULKAN_HPP_NO_EXCEPTIONS
811 typedef Result type;
812#else
813 typedef void type;
814#endif
815 };
816
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700817 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600818 {
819#ifdef VULKAN_HPP_NO_EXCEPTIONS
820 assert( result == Result::eSuccess );
821 return result;
822#else
823 if ( result != Result::eSuccess )
824 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600825 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600826 }
827#endif
828 }
829
830 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700831 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600832 {
833#ifdef VULKAN_HPP_NO_EXCEPTIONS
834 assert( result == Result::eSuccess );
835 return ResultValue<T>( result, data );
836#else
837 if ( result != Result::eSuccess )
838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600839 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600840 }
841 return data;
842#endif
843 }
844
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700845 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600846 {
847#ifdef VULKAN_HPP_NO_EXCEPTIONS
848 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
849#else
850 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
851 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600852 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600853 }
854#endif
855 return result;
856 }
857
858 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700859 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 -0600860 {
861#ifdef VULKAN_HPP_NO_EXCEPTIONS
862 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
863#else
864 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
865 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600866 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600867 }
868#endif
869 return ResultValue<T>( result, data );
870 }
871
872 using SampleMask = uint32_t;
873
874 using Bool32 = uint32_t;
875
876 using DeviceSize = uint64_t;
877
878 enum class FramebufferCreateFlagBits
879 {
880 };
881
882 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
883
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600884 enum class QueryPoolCreateFlagBits
885 {
886 };
887
888 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
889
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600890 enum class RenderPassCreateFlagBits
891 {
892 };
893
894 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
895
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600896 enum class SamplerCreateFlagBits
897 {
898 };
899
900 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
901
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600902 enum class PipelineLayoutCreateFlagBits
903 {
904 };
905
906 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
907
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600908 enum class PipelineCacheCreateFlagBits
909 {
910 };
911
912 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
913
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600914 enum class PipelineDepthStencilStateCreateFlagBits
915 {
916 };
917
918 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
919
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600920 enum class PipelineDynamicStateCreateFlagBits
921 {
922 };
923
924 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
925
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600926 enum class PipelineColorBlendStateCreateFlagBits
927 {
928 };
929
930 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
931
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600932 enum class PipelineMultisampleStateCreateFlagBits
933 {
934 };
935
936 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
937
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600938 enum class PipelineRasterizationStateCreateFlagBits
939 {
940 };
941
942 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
943
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600944 enum class PipelineViewportStateCreateFlagBits
945 {
946 };
947
948 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
949
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600950 enum class PipelineTessellationStateCreateFlagBits
951 {
952 };
953
954 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
955
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600956 enum class PipelineInputAssemblyStateCreateFlagBits
957 {
958 };
959
960 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
961
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600962 enum class PipelineVertexInputStateCreateFlagBits
963 {
964 };
965
966 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
967
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600968 enum class PipelineShaderStageCreateFlagBits
969 {
970 };
971
972 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
973
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600974 enum class BufferViewCreateFlagBits
975 {
976 };
977
978 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
979
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600980 enum class InstanceCreateFlagBits
981 {
982 };
983
984 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
985
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600986 enum class DeviceCreateFlagBits
987 {
988 };
989
990 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
991
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600992 enum class DeviceQueueCreateFlagBits
993 {
994 };
995
996 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
997
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600998 enum class ImageViewCreateFlagBits
999 {
1000 };
1001
1002 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
1003
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001004 enum class SemaphoreCreateFlagBits
1005 {
1006 };
1007
1008 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1009
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001010 enum class ShaderModuleCreateFlagBits
1011 {
1012 };
1013
1014 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1015
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001016 enum class EventCreateFlagBits
1017 {
1018 };
1019
1020 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1021
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001022 enum class MemoryMapFlagBits
1023 {
1024 };
1025
1026 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1027
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001028 enum class DescriptorPoolResetFlagBits
1029 {
1030 };
1031
1032 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1033
Mark Young0f183a82017-02-28 09:58:04 -07001034 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001035 {
1036 };
1037
Mark Young0f183a82017-02-28 09:58:04 -07001038 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001039
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001040 enum class DisplayModeCreateFlagBitsKHR
1041 {
1042 };
1043
1044 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1045
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001046 enum class DisplaySurfaceCreateFlagBitsKHR
1047 {
1048 };
1049
1050 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1051
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001052#ifdef VK_USE_PLATFORM_ANDROID_KHR
1053 enum class AndroidSurfaceCreateFlagBitsKHR
1054 {
1055 };
1056#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1057
1058#ifdef VK_USE_PLATFORM_ANDROID_KHR
1059 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001060#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1061
1062#ifdef VK_USE_PLATFORM_MIR_KHR
1063 enum class MirSurfaceCreateFlagBitsKHR
1064 {
1065 };
1066#endif /*VK_USE_PLATFORM_MIR_KHR*/
1067
1068#ifdef VK_USE_PLATFORM_MIR_KHR
1069 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001070#endif /*VK_USE_PLATFORM_MIR_KHR*/
1071
Mark Young39389872017-01-19 21:10:49 -07001072#ifdef VK_USE_PLATFORM_VI_NN
1073 enum class ViSurfaceCreateFlagBitsNN
1074 {
1075 };
1076#endif /*VK_USE_PLATFORM_VI_NN*/
1077
1078#ifdef VK_USE_PLATFORM_VI_NN
1079 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001080#endif /*VK_USE_PLATFORM_VI_NN*/
1081
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001082#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1083 enum class WaylandSurfaceCreateFlagBitsKHR
1084 {
1085 };
1086#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1087
1088#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1089 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001090#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1091
1092#ifdef VK_USE_PLATFORM_WIN32_KHR
1093 enum class Win32SurfaceCreateFlagBitsKHR
1094 {
1095 };
1096#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1097
1098#ifdef VK_USE_PLATFORM_WIN32_KHR
1099 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001100#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1101
1102#ifdef VK_USE_PLATFORM_XLIB_KHR
1103 enum class XlibSurfaceCreateFlagBitsKHR
1104 {
1105 };
1106#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1107
1108#ifdef VK_USE_PLATFORM_XLIB_KHR
1109 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001110#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1111
1112#ifdef VK_USE_PLATFORM_XCB_KHR
1113 enum class XcbSurfaceCreateFlagBitsKHR
1114 {
1115 };
1116#endif /*VK_USE_PLATFORM_XCB_KHR*/
1117
1118#ifdef VK_USE_PLATFORM_XCB_KHR
1119 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001120#endif /*VK_USE_PLATFORM_XCB_KHR*/
1121
Mark Young0f183a82017-02-28 09:58:04 -07001122#ifdef VK_USE_PLATFORM_IOS_MVK
1123 enum class IOSSurfaceCreateFlagBitsMVK
1124 {
1125 };
1126#endif /*VK_USE_PLATFORM_IOS_MVK*/
1127
1128#ifdef VK_USE_PLATFORM_IOS_MVK
1129 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001130#endif /*VK_USE_PLATFORM_IOS_MVK*/
1131
1132#ifdef VK_USE_PLATFORM_MACOS_MVK
1133 enum class MacOSSurfaceCreateFlagBitsMVK
1134 {
1135 };
1136#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1137
1138#ifdef VK_USE_PLATFORM_MACOS_MVK
1139 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001140#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1141
Mark Young39389872017-01-19 21:10:49 -07001142 enum class CommandPoolTrimFlagBitsKHR
1143 {
1144 };
1145
1146 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1147
Mark Young0f183a82017-02-28 09:58:04 -07001148 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1149 {
1150 };
1151
1152 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1153
Mark Young0f183a82017-02-28 09:58:04 -07001154 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1155 {
1156 };
1157
1158 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1159
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001160 class DeviceMemory
1161 {
1162 public:
1163 DeviceMemory()
1164 : m_deviceMemory(VK_NULL_HANDLE)
1165 {}
1166
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001167 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001168 : m_deviceMemory(VK_NULL_HANDLE)
1169 {}
1170
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001171 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1172 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001173 {}
1174
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001175#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001176 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001177 {
1178 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001179 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001180 }
1181#endif
1182
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001183 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001184 {
1185 m_deviceMemory = VK_NULL_HANDLE;
1186 return *this;
1187 }
1188
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001189 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001190 {
1191 return m_deviceMemory == rhs.m_deviceMemory;
1192 }
1193
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001194 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001195 {
1196 return m_deviceMemory != rhs.m_deviceMemory;
1197 }
1198
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001199 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001200 {
1201 return m_deviceMemory < rhs.m_deviceMemory;
1202 }
1203
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001204
1205
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001206 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001207 {
1208 return m_deviceMemory;
1209 }
1210
1211 explicit operator bool() const
1212 {
1213 return m_deviceMemory != VK_NULL_HANDLE;
1214 }
1215
1216 bool operator!() const
1217 {
1218 return m_deviceMemory == VK_NULL_HANDLE;
1219 }
1220
1221 private:
1222 VkDeviceMemory m_deviceMemory;
1223 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001224
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001225 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1226
1227 class CommandPool
1228 {
1229 public:
1230 CommandPool()
1231 : m_commandPool(VK_NULL_HANDLE)
1232 {}
1233
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001234 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001235 : m_commandPool(VK_NULL_HANDLE)
1236 {}
1237
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001238 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1239 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001240 {}
1241
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001242#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001243 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001244 {
1245 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001246 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001247 }
1248#endif
1249
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001250 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001251 {
1252 m_commandPool = VK_NULL_HANDLE;
1253 return *this;
1254 }
1255
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001256 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001257 {
1258 return m_commandPool == rhs.m_commandPool;
1259 }
1260
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001261 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001262 {
1263 return m_commandPool != rhs.m_commandPool;
1264 }
1265
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001266 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001267 {
1268 return m_commandPool < rhs.m_commandPool;
1269 }
1270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001271
1272
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001273 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001274 {
1275 return m_commandPool;
1276 }
1277
1278 explicit operator bool() const
1279 {
1280 return m_commandPool != VK_NULL_HANDLE;
1281 }
1282
1283 bool operator!() const
1284 {
1285 return m_commandPool == VK_NULL_HANDLE;
1286 }
1287
1288 private:
1289 VkCommandPool m_commandPool;
1290 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001291
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001292 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1293
1294 class Buffer
1295 {
1296 public:
1297 Buffer()
1298 : m_buffer(VK_NULL_HANDLE)
1299 {}
1300
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001301 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001302 : m_buffer(VK_NULL_HANDLE)
1303 {}
1304
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001305 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1306 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001307 {}
1308
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001309#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001310 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001311 {
1312 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001313 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001314 }
1315#endif
1316
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001317 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001318 {
1319 m_buffer = VK_NULL_HANDLE;
1320 return *this;
1321 }
1322
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001323 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001324 {
1325 return m_buffer == rhs.m_buffer;
1326 }
1327
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001328 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001329 {
1330 return m_buffer != rhs.m_buffer;
1331 }
1332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001333 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001334 {
1335 return m_buffer < rhs.m_buffer;
1336 }
1337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001338
1339
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001340 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001341 {
1342 return m_buffer;
1343 }
1344
1345 explicit operator bool() const
1346 {
1347 return m_buffer != VK_NULL_HANDLE;
1348 }
1349
1350 bool operator!() const
1351 {
1352 return m_buffer == VK_NULL_HANDLE;
1353 }
1354
1355 private:
1356 VkBuffer m_buffer;
1357 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001358
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001359 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1360
1361 class BufferView
1362 {
1363 public:
1364 BufferView()
1365 : m_bufferView(VK_NULL_HANDLE)
1366 {}
1367
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001368 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001369 : m_bufferView(VK_NULL_HANDLE)
1370 {}
1371
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001372 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1373 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001374 {}
1375
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001376#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001377 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001378 {
1379 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001380 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001381 }
1382#endif
1383
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001384 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001385 {
1386 m_bufferView = VK_NULL_HANDLE;
1387 return *this;
1388 }
1389
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001390 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001391 {
1392 return m_bufferView == rhs.m_bufferView;
1393 }
1394
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001395 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001396 {
1397 return m_bufferView != rhs.m_bufferView;
1398 }
1399
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001400 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001401 {
1402 return m_bufferView < rhs.m_bufferView;
1403 }
1404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001405
1406
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001407 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001408 {
1409 return m_bufferView;
1410 }
1411
1412 explicit operator bool() const
1413 {
1414 return m_bufferView != VK_NULL_HANDLE;
1415 }
1416
1417 bool operator!() const
1418 {
1419 return m_bufferView == VK_NULL_HANDLE;
1420 }
1421
1422 private:
1423 VkBufferView m_bufferView;
1424 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001425
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001426 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1427
1428 class Image
1429 {
1430 public:
1431 Image()
1432 : m_image(VK_NULL_HANDLE)
1433 {}
1434
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001435 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001436 : m_image(VK_NULL_HANDLE)
1437 {}
1438
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001439 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1440 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001441 {}
1442
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001443#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001444 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001445 {
1446 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001447 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001448 }
1449#endif
1450
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001451 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001452 {
1453 m_image = VK_NULL_HANDLE;
1454 return *this;
1455 }
1456
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001457 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001458 {
1459 return m_image == rhs.m_image;
1460 }
1461
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001462 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001463 {
1464 return m_image != rhs.m_image;
1465 }
1466
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001467 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001468 {
1469 return m_image < rhs.m_image;
1470 }
1471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001472
1473
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001474 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001475 {
1476 return m_image;
1477 }
1478
1479 explicit operator bool() const
1480 {
1481 return m_image != VK_NULL_HANDLE;
1482 }
1483
1484 bool operator!() const
1485 {
1486 return m_image == VK_NULL_HANDLE;
1487 }
1488
1489 private:
1490 VkImage m_image;
1491 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001492
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001493 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1494
1495 class ImageView
1496 {
1497 public:
1498 ImageView()
1499 : m_imageView(VK_NULL_HANDLE)
1500 {}
1501
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001502 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001503 : m_imageView(VK_NULL_HANDLE)
1504 {}
1505
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001506 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1507 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001508 {}
1509
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001510#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001511 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001512 {
1513 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001514 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001515 }
1516#endif
1517
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001518 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001519 {
1520 m_imageView = VK_NULL_HANDLE;
1521 return *this;
1522 }
1523
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001524 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001525 {
1526 return m_imageView == rhs.m_imageView;
1527 }
1528
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001529 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001530 {
1531 return m_imageView != rhs.m_imageView;
1532 }
1533
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001534 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001535 {
1536 return m_imageView < rhs.m_imageView;
1537 }
1538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001539
1540
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001541 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001542 {
1543 return m_imageView;
1544 }
1545
1546 explicit operator bool() const
1547 {
1548 return m_imageView != VK_NULL_HANDLE;
1549 }
1550
1551 bool operator!() const
1552 {
1553 return m_imageView == VK_NULL_HANDLE;
1554 }
1555
1556 private:
1557 VkImageView m_imageView;
1558 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001559
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001560 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1561
1562 class ShaderModule
1563 {
1564 public:
1565 ShaderModule()
1566 : m_shaderModule(VK_NULL_HANDLE)
1567 {}
1568
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001569 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001570 : m_shaderModule(VK_NULL_HANDLE)
1571 {}
1572
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001573 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1574 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001575 {}
1576
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001577#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001578 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001579 {
1580 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001581 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001582 }
1583#endif
1584
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001585 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001586 {
1587 m_shaderModule = VK_NULL_HANDLE;
1588 return *this;
1589 }
1590
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001591 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001592 {
1593 return m_shaderModule == rhs.m_shaderModule;
1594 }
1595
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001596 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001597 {
1598 return m_shaderModule != rhs.m_shaderModule;
1599 }
1600
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001601 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001602 {
1603 return m_shaderModule < rhs.m_shaderModule;
1604 }
1605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001606
1607
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001608 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001609 {
1610 return m_shaderModule;
1611 }
1612
1613 explicit operator bool() const
1614 {
1615 return m_shaderModule != VK_NULL_HANDLE;
1616 }
1617
1618 bool operator!() const
1619 {
1620 return m_shaderModule == VK_NULL_HANDLE;
1621 }
1622
1623 private:
1624 VkShaderModule m_shaderModule;
1625 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001626
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001627 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1628
1629 class Pipeline
1630 {
1631 public:
1632 Pipeline()
1633 : m_pipeline(VK_NULL_HANDLE)
1634 {}
1635
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001636 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001637 : m_pipeline(VK_NULL_HANDLE)
1638 {}
1639
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001640 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1641 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001642 {}
1643
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001644#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001645 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001646 {
1647 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001648 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001649 }
1650#endif
1651
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001652 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001653 {
1654 m_pipeline = VK_NULL_HANDLE;
1655 return *this;
1656 }
1657
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001658 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001659 {
1660 return m_pipeline == rhs.m_pipeline;
1661 }
1662
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001663 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001664 {
1665 return m_pipeline != rhs.m_pipeline;
1666 }
1667
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001668 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001669 {
1670 return m_pipeline < rhs.m_pipeline;
1671 }
1672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001673
1674
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001675 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001676 {
1677 return m_pipeline;
1678 }
1679
1680 explicit operator bool() const
1681 {
1682 return m_pipeline != VK_NULL_HANDLE;
1683 }
1684
1685 bool operator!() const
1686 {
1687 return m_pipeline == VK_NULL_HANDLE;
1688 }
1689
1690 private:
1691 VkPipeline m_pipeline;
1692 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001693
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001694 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1695
1696 class PipelineLayout
1697 {
1698 public:
1699 PipelineLayout()
1700 : m_pipelineLayout(VK_NULL_HANDLE)
1701 {}
1702
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001703 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001704 : m_pipelineLayout(VK_NULL_HANDLE)
1705 {}
1706
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001707 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1708 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001709 {}
1710
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001711#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001712 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001713 {
1714 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001715 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001716 }
1717#endif
1718
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001719 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001720 {
1721 m_pipelineLayout = VK_NULL_HANDLE;
1722 return *this;
1723 }
1724
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001725 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001726 {
1727 return m_pipelineLayout == rhs.m_pipelineLayout;
1728 }
1729
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001730 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001731 {
1732 return m_pipelineLayout != rhs.m_pipelineLayout;
1733 }
1734
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001735 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001736 {
1737 return m_pipelineLayout < rhs.m_pipelineLayout;
1738 }
1739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001740
1741
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001742 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001743 {
1744 return m_pipelineLayout;
1745 }
1746
1747 explicit operator bool() const
1748 {
1749 return m_pipelineLayout != VK_NULL_HANDLE;
1750 }
1751
1752 bool operator!() const
1753 {
1754 return m_pipelineLayout == VK_NULL_HANDLE;
1755 }
1756
1757 private:
1758 VkPipelineLayout m_pipelineLayout;
1759 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001760
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001761 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1762
1763 class Sampler
1764 {
1765 public:
1766 Sampler()
1767 : m_sampler(VK_NULL_HANDLE)
1768 {}
1769
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001770 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001771 : m_sampler(VK_NULL_HANDLE)
1772 {}
1773
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001774 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1775 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001776 {}
1777
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001778#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001779 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001780 {
1781 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001782 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001783 }
1784#endif
1785
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001786 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001787 {
1788 m_sampler = VK_NULL_HANDLE;
1789 return *this;
1790 }
1791
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001792 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001793 {
1794 return m_sampler == rhs.m_sampler;
1795 }
1796
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001797 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001798 {
1799 return m_sampler != rhs.m_sampler;
1800 }
1801
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001802 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001803 {
1804 return m_sampler < rhs.m_sampler;
1805 }
1806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001807
1808
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001809 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001810 {
1811 return m_sampler;
1812 }
1813
1814 explicit operator bool() const
1815 {
1816 return m_sampler != VK_NULL_HANDLE;
1817 }
1818
1819 bool operator!() const
1820 {
1821 return m_sampler == VK_NULL_HANDLE;
1822 }
1823
1824 private:
1825 VkSampler m_sampler;
1826 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001827
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001828 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1829
1830 class DescriptorSet
1831 {
1832 public:
1833 DescriptorSet()
1834 : m_descriptorSet(VK_NULL_HANDLE)
1835 {}
1836
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001837 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001838 : m_descriptorSet(VK_NULL_HANDLE)
1839 {}
1840
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001841 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1842 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001843 {}
1844
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001845#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001846 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001847 {
1848 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001849 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001850 }
1851#endif
1852
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001853 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001854 {
1855 m_descriptorSet = VK_NULL_HANDLE;
1856 return *this;
1857 }
1858
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001859 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001860 {
1861 return m_descriptorSet == rhs.m_descriptorSet;
1862 }
1863
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001864 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001865 {
1866 return m_descriptorSet != rhs.m_descriptorSet;
1867 }
1868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001869 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001870 {
1871 return m_descriptorSet < rhs.m_descriptorSet;
1872 }
1873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001874
1875
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001876 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001877 {
1878 return m_descriptorSet;
1879 }
1880
1881 explicit operator bool() const
1882 {
1883 return m_descriptorSet != VK_NULL_HANDLE;
1884 }
1885
1886 bool operator!() const
1887 {
1888 return m_descriptorSet == VK_NULL_HANDLE;
1889 }
1890
1891 private:
1892 VkDescriptorSet m_descriptorSet;
1893 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001894
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001895 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1896
1897 class DescriptorSetLayout
1898 {
1899 public:
1900 DescriptorSetLayout()
1901 : m_descriptorSetLayout(VK_NULL_HANDLE)
1902 {}
1903
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001904 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001905 : m_descriptorSetLayout(VK_NULL_HANDLE)
1906 {}
1907
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001908 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
1909 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001910 {}
1911
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001912#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001913 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001914 {
1915 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001916 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001917 }
1918#endif
1919
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001920 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001921 {
1922 m_descriptorSetLayout = VK_NULL_HANDLE;
1923 return *this;
1924 }
1925
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001926 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001927 {
1928 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
1929 }
1930
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001931 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001932 {
1933 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
1934 }
1935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001936 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001937 {
1938 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
1939 }
1940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001941
1942
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001943 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001944 {
1945 return m_descriptorSetLayout;
1946 }
1947
1948 explicit operator bool() const
1949 {
1950 return m_descriptorSetLayout != VK_NULL_HANDLE;
1951 }
1952
1953 bool operator!() const
1954 {
1955 return m_descriptorSetLayout == VK_NULL_HANDLE;
1956 }
1957
1958 private:
1959 VkDescriptorSetLayout m_descriptorSetLayout;
1960 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001961
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001962 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
1963
1964 class DescriptorPool
1965 {
1966 public:
1967 DescriptorPool()
1968 : m_descriptorPool(VK_NULL_HANDLE)
1969 {}
1970
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001971 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001972 : m_descriptorPool(VK_NULL_HANDLE)
1973 {}
1974
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001975 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
1976 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001977 {}
1978
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001979#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001980 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001981 {
1982 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001983 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001984 }
1985#endif
1986
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001987 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001988 {
1989 m_descriptorPool = VK_NULL_HANDLE;
1990 return *this;
1991 }
1992
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001993 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001994 {
1995 return m_descriptorPool == rhs.m_descriptorPool;
1996 }
1997
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001998 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001999 {
2000 return m_descriptorPool != rhs.m_descriptorPool;
2001 }
2002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002003 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002004 {
2005 return m_descriptorPool < rhs.m_descriptorPool;
2006 }
2007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002008
2009
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002010 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002011 {
2012 return m_descriptorPool;
2013 }
2014
2015 explicit operator bool() const
2016 {
2017 return m_descriptorPool != VK_NULL_HANDLE;
2018 }
2019
2020 bool operator!() const
2021 {
2022 return m_descriptorPool == VK_NULL_HANDLE;
2023 }
2024
2025 private:
2026 VkDescriptorPool m_descriptorPool;
2027 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002028
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002029 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2030
2031 class Fence
2032 {
2033 public:
2034 Fence()
2035 : m_fence(VK_NULL_HANDLE)
2036 {}
2037
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002038 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002039 : m_fence(VK_NULL_HANDLE)
2040 {}
2041
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002042 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2043 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002044 {}
2045
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002046#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002047 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002048 {
2049 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002050 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002051 }
2052#endif
2053
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002054 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002055 {
2056 m_fence = VK_NULL_HANDLE;
2057 return *this;
2058 }
2059
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002060 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002061 {
2062 return m_fence == rhs.m_fence;
2063 }
2064
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002065 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002066 {
2067 return m_fence != rhs.m_fence;
2068 }
2069
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002070 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002071 {
2072 return m_fence < rhs.m_fence;
2073 }
2074
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002075
2076
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002077 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002078 {
2079 return m_fence;
2080 }
2081
2082 explicit operator bool() const
2083 {
2084 return m_fence != VK_NULL_HANDLE;
2085 }
2086
2087 bool operator!() const
2088 {
2089 return m_fence == VK_NULL_HANDLE;
2090 }
2091
2092 private:
2093 VkFence m_fence;
2094 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002095
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002096 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2097
2098 class Semaphore
2099 {
2100 public:
2101 Semaphore()
2102 : m_semaphore(VK_NULL_HANDLE)
2103 {}
2104
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002105 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002106 : m_semaphore(VK_NULL_HANDLE)
2107 {}
2108
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002109 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2110 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002111 {}
2112
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002113#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002114 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002115 {
2116 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002117 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002118 }
2119#endif
2120
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002121 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002122 {
2123 m_semaphore = VK_NULL_HANDLE;
2124 return *this;
2125 }
2126
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002127 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002128 {
2129 return m_semaphore == rhs.m_semaphore;
2130 }
2131
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002132 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002133 {
2134 return m_semaphore != rhs.m_semaphore;
2135 }
2136
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002137 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002138 {
2139 return m_semaphore < rhs.m_semaphore;
2140 }
2141
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002142
2143
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002144 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002145 {
2146 return m_semaphore;
2147 }
2148
2149 explicit operator bool() const
2150 {
2151 return m_semaphore != VK_NULL_HANDLE;
2152 }
2153
2154 bool operator!() const
2155 {
2156 return m_semaphore == VK_NULL_HANDLE;
2157 }
2158
2159 private:
2160 VkSemaphore m_semaphore;
2161 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002162
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002163 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2164
2165 class Event
2166 {
2167 public:
2168 Event()
2169 : m_event(VK_NULL_HANDLE)
2170 {}
2171
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002172 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002173 : m_event(VK_NULL_HANDLE)
2174 {}
2175
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002176 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2177 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002178 {}
2179
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002180#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002181 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002182 {
2183 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002184 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002185 }
2186#endif
2187
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002188 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002189 {
2190 m_event = VK_NULL_HANDLE;
2191 return *this;
2192 }
2193
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002194 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002195 {
2196 return m_event == rhs.m_event;
2197 }
2198
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002199 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002200 {
2201 return m_event != rhs.m_event;
2202 }
2203
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002204 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002205 {
2206 return m_event < rhs.m_event;
2207 }
2208
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002209
2210
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002211 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002212 {
2213 return m_event;
2214 }
2215
2216 explicit operator bool() const
2217 {
2218 return m_event != VK_NULL_HANDLE;
2219 }
2220
2221 bool operator!() const
2222 {
2223 return m_event == VK_NULL_HANDLE;
2224 }
2225
2226 private:
2227 VkEvent m_event;
2228 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002229
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002230 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2231
2232 class QueryPool
2233 {
2234 public:
2235 QueryPool()
2236 : m_queryPool(VK_NULL_HANDLE)
2237 {}
2238
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002239 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002240 : m_queryPool(VK_NULL_HANDLE)
2241 {}
2242
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002243 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2244 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002245 {}
2246
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002247#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002248 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002249 {
2250 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002251 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002252 }
2253#endif
2254
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002255 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002256 {
2257 m_queryPool = VK_NULL_HANDLE;
2258 return *this;
2259 }
2260
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002261 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002262 {
2263 return m_queryPool == rhs.m_queryPool;
2264 }
2265
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002266 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002267 {
2268 return m_queryPool != rhs.m_queryPool;
2269 }
2270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002271 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002272 {
2273 return m_queryPool < rhs.m_queryPool;
2274 }
2275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002276
2277
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002278 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002279 {
2280 return m_queryPool;
2281 }
2282
2283 explicit operator bool() const
2284 {
2285 return m_queryPool != VK_NULL_HANDLE;
2286 }
2287
2288 bool operator!() const
2289 {
2290 return m_queryPool == VK_NULL_HANDLE;
2291 }
2292
2293 private:
2294 VkQueryPool m_queryPool;
2295 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002296
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002297 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2298
2299 class Framebuffer
2300 {
2301 public:
2302 Framebuffer()
2303 : m_framebuffer(VK_NULL_HANDLE)
2304 {}
2305
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002306 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002307 : m_framebuffer(VK_NULL_HANDLE)
2308 {}
2309
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002310 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2311 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002312 {}
2313
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002314#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002315 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002316 {
2317 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002318 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002319 }
2320#endif
2321
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002322 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002323 {
2324 m_framebuffer = VK_NULL_HANDLE;
2325 return *this;
2326 }
2327
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002328 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002329 {
2330 return m_framebuffer == rhs.m_framebuffer;
2331 }
2332
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002333 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002334 {
2335 return m_framebuffer != rhs.m_framebuffer;
2336 }
2337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002338 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002339 {
2340 return m_framebuffer < rhs.m_framebuffer;
2341 }
2342
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002343
2344
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002345 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002346 {
2347 return m_framebuffer;
2348 }
2349
2350 explicit operator bool() const
2351 {
2352 return m_framebuffer != VK_NULL_HANDLE;
2353 }
2354
2355 bool operator!() const
2356 {
2357 return m_framebuffer == VK_NULL_HANDLE;
2358 }
2359
2360 private:
2361 VkFramebuffer m_framebuffer;
2362 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002363
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002364 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2365
2366 class RenderPass
2367 {
2368 public:
2369 RenderPass()
2370 : m_renderPass(VK_NULL_HANDLE)
2371 {}
2372
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002373 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002374 : m_renderPass(VK_NULL_HANDLE)
2375 {}
2376
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002377 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2378 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002379 {}
2380
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002381#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002382 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002383 {
2384 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002385 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002386 }
2387#endif
2388
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002389 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002390 {
2391 m_renderPass = VK_NULL_HANDLE;
2392 return *this;
2393 }
2394
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002395 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002396 {
2397 return m_renderPass == rhs.m_renderPass;
2398 }
2399
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002400 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002401 {
2402 return m_renderPass != rhs.m_renderPass;
2403 }
2404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002405 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002406 {
2407 return m_renderPass < rhs.m_renderPass;
2408 }
2409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002410
2411
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002412 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002413 {
2414 return m_renderPass;
2415 }
2416
2417 explicit operator bool() const
2418 {
2419 return m_renderPass != VK_NULL_HANDLE;
2420 }
2421
2422 bool operator!() const
2423 {
2424 return m_renderPass == VK_NULL_HANDLE;
2425 }
2426
2427 private:
2428 VkRenderPass m_renderPass;
2429 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002430
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002431 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2432
2433 class PipelineCache
2434 {
2435 public:
2436 PipelineCache()
2437 : m_pipelineCache(VK_NULL_HANDLE)
2438 {}
2439
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002440 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002441 : m_pipelineCache(VK_NULL_HANDLE)
2442 {}
2443
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002444 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2445 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002446 {}
2447
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002448#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002449 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002450 {
2451 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002452 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002453 }
2454#endif
2455
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002456 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002457 {
2458 m_pipelineCache = VK_NULL_HANDLE;
2459 return *this;
2460 }
2461
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002462 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002463 {
2464 return m_pipelineCache == rhs.m_pipelineCache;
2465 }
2466
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002467 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002468 {
2469 return m_pipelineCache != rhs.m_pipelineCache;
2470 }
2471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002472 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002473 {
2474 return m_pipelineCache < rhs.m_pipelineCache;
2475 }
2476
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002477
2478
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002479 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002480 {
2481 return m_pipelineCache;
2482 }
2483
2484 explicit operator bool() const
2485 {
2486 return m_pipelineCache != VK_NULL_HANDLE;
2487 }
2488
2489 bool operator!() const
2490 {
2491 return m_pipelineCache == VK_NULL_HANDLE;
2492 }
2493
2494 private:
2495 VkPipelineCache m_pipelineCache;
2496 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002497
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002498 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2499
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002500 class ObjectTableNVX
2501 {
2502 public:
2503 ObjectTableNVX()
2504 : m_objectTableNVX(VK_NULL_HANDLE)
2505 {}
2506
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002507 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002508 : m_objectTableNVX(VK_NULL_HANDLE)
2509 {}
2510
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002511 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2512 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002513 {}
2514
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002515#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002516 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002517 {
2518 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002519 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002520 }
2521#endif
2522
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002523 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002524 {
2525 m_objectTableNVX = VK_NULL_HANDLE;
2526 return *this;
2527 }
2528
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002529 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002530 {
2531 return m_objectTableNVX == rhs.m_objectTableNVX;
2532 }
2533
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002534 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002535 {
2536 return m_objectTableNVX != rhs.m_objectTableNVX;
2537 }
2538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002539 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002540 {
2541 return m_objectTableNVX < rhs.m_objectTableNVX;
2542 }
2543
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002544
2545
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002546 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002547 {
2548 return m_objectTableNVX;
2549 }
2550
2551 explicit operator bool() const
2552 {
2553 return m_objectTableNVX != VK_NULL_HANDLE;
2554 }
2555
2556 bool operator!() const
2557 {
2558 return m_objectTableNVX == VK_NULL_HANDLE;
2559 }
2560
2561 private:
2562 VkObjectTableNVX m_objectTableNVX;
2563 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002564
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002565 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2566
2567 class IndirectCommandsLayoutNVX
2568 {
2569 public:
2570 IndirectCommandsLayoutNVX()
2571 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2572 {}
2573
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002574 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002575 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2576 {}
2577
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002578 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2579 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002580 {}
2581
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002582#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002583 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002584 {
2585 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002586 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002587 }
2588#endif
2589
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002590 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002591 {
2592 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2593 return *this;
2594 }
2595
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002596 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002597 {
2598 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2599 }
2600
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002601 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002602 {
2603 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2604 }
2605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002606 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002607 {
2608 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2609 }
2610
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002611
2612
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002613 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002614 {
2615 return m_indirectCommandsLayoutNVX;
2616 }
2617
2618 explicit operator bool() const
2619 {
2620 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2621 }
2622
2623 bool operator!() const
2624 {
2625 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2626 }
2627
2628 private:
2629 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2630 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002631
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002632 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2633
Mark Young0f183a82017-02-28 09:58:04 -07002634 class DescriptorUpdateTemplateKHR
2635 {
2636 public:
2637 DescriptorUpdateTemplateKHR()
2638 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2639 {}
2640
2641 DescriptorUpdateTemplateKHR( std::nullptr_t )
2642 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2643 {}
2644
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002645 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2646 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002647 {}
2648
2649#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002650 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002651 {
2652 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002653 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002654 }
2655#endif
2656
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002657 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002658 {
2659 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2660 return *this;
2661 }
2662
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002663 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002664 {
2665 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2666 }
2667
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002668 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002669 {
2670 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2671 }
2672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002673 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002674 {
2675 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2676 }
2677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002678
2679
Mark Young0f183a82017-02-28 09:58:04 -07002680 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2681 {
2682 return m_descriptorUpdateTemplateKHR;
2683 }
2684
2685 explicit operator bool() const
2686 {
2687 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2688 }
2689
2690 bool operator!() const
2691 {
2692 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2693 }
2694
2695 private:
2696 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2697 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002698
Mark Young0f183a82017-02-28 09:58:04 -07002699 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2700
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002701 class DisplayKHR
2702 {
2703 public:
2704 DisplayKHR()
2705 : m_displayKHR(VK_NULL_HANDLE)
2706 {}
2707
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002708 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002709 : m_displayKHR(VK_NULL_HANDLE)
2710 {}
2711
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002712 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2713 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002714 {}
2715
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002716#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002717 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002718 {
2719 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002720 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002721 }
2722#endif
2723
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002724 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002725 {
2726 m_displayKHR = VK_NULL_HANDLE;
2727 return *this;
2728 }
2729
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002730 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002731 {
2732 return m_displayKHR == rhs.m_displayKHR;
2733 }
2734
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002735 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002736 {
2737 return m_displayKHR != rhs.m_displayKHR;
2738 }
2739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002740 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002741 {
2742 return m_displayKHR < rhs.m_displayKHR;
2743 }
2744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002745
2746
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002747 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002748 {
2749 return m_displayKHR;
2750 }
2751
2752 explicit operator bool() const
2753 {
2754 return m_displayKHR != VK_NULL_HANDLE;
2755 }
2756
2757 bool operator!() const
2758 {
2759 return m_displayKHR == VK_NULL_HANDLE;
2760 }
2761
2762 private:
2763 VkDisplayKHR m_displayKHR;
2764 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002765
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002766 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2767
2768 class DisplayModeKHR
2769 {
2770 public:
2771 DisplayModeKHR()
2772 : m_displayModeKHR(VK_NULL_HANDLE)
2773 {}
2774
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002775 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002776 : m_displayModeKHR(VK_NULL_HANDLE)
2777 {}
2778
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002779 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
2780 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002781 {}
2782
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002783#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002784 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002785 {
2786 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002787 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002788 }
2789#endif
2790
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002791 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002792 {
2793 m_displayModeKHR = VK_NULL_HANDLE;
2794 return *this;
2795 }
2796
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002797 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002798 {
2799 return m_displayModeKHR == rhs.m_displayModeKHR;
2800 }
2801
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002802 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002803 {
2804 return m_displayModeKHR != rhs.m_displayModeKHR;
2805 }
2806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002807 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002808 {
2809 return m_displayModeKHR < rhs.m_displayModeKHR;
2810 }
2811
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002812
2813
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002814 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002815 {
2816 return m_displayModeKHR;
2817 }
2818
2819 explicit operator bool() const
2820 {
2821 return m_displayModeKHR != VK_NULL_HANDLE;
2822 }
2823
2824 bool operator!() const
2825 {
2826 return m_displayModeKHR == VK_NULL_HANDLE;
2827 }
2828
2829 private:
2830 VkDisplayModeKHR m_displayModeKHR;
2831 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002832
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002833 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
2834
2835 class SurfaceKHR
2836 {
2837 public:
2838 SurfaceKHR()
2839 : m_surfaceKHR(VK_NULL_HANDLE)
2840 {}
2841
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002842 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002843 : m_surfaceKHR(VK_NULL_HANDLE)
2844 {}
2845
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002846 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
2847 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002848 {}
2849
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002850#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002851 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002852 {
2853 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002854 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002855 }
2856#endif
2857
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002858 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002859 {
2860 m_surfaceKHR = VK_NULL_HANDLE;
2861 return *this;
2862 }
2863
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002864 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002865 {
2866 return m_surfaceKHR == rhs.m_surfaceKHR;
2867 }
2868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002869 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002870 {
2871 return m_surfaceKHR != rhs.m_surfaceKHR;
2872 }
2873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002874 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002875 {
2876 return m_surfaceKHR < rhs.m_surfaceKHR;
2877 }
2878
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002879
2880
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002881 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002882 {
2883 return m_surfaceKHR;
2884 }
2885
2886 explicit operator bool() const
2887 {
2888 return m_surfaceKHR != VK_NULL_HANDLE;
2889 }
2890
2891 bool operator!() const
2892 {
2893 return m_surfaceKHR == VK_NULL_HANDLE;
2894 }
2895
2896 private:
2897 VkSurfaceKHR m_surfaceKHR;
2898 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002899
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002900 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
2901
2902 class SwapchainKHR
2903 {
2904 public:
2905 SwapchainKHR()
2906 : m_swapchainKHR(VK_NULL_HANDLE)
2907 {}
2908
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002909 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002910 : m_swapchainKHR(VK_NULL_HANDLE)
2911 {}
2912
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002913 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
2914 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002915 {}
2916
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002917#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002918 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002919 {
2920 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002921 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002922 }
2923#endif
2924
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002925 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002926 {
2927 m_swapchainKHR = VK_NULL_HANDLE;
2928 return *this;
2929 }
2930
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002931 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002932 {
2933 return m_swapchainKHR == rhs.m_swapchainKHR;
2934 }
2935
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002936 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002937 {
2938 return m_swapchainKHR != rhs.m_swapchainKHR;
2939 }
2940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002941 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002942 {
2943 return m_swapchainKHR < rhs.m_swapchainKHR;
2944 }
2945
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002946
2947
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002948 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002949 {
2950 return m_swapchainKHR;
2951 }
2952
2953 explicit operator bool() const
2954 {
2955 return m_swapchainKHR != VK_NULL_HANDLE;
2956 }
2957
2958 bool operator!() const
2959 {
2960 return m_swapchainKHR == VK_NULL_HANDLE;
2961 }
2962
2963 private:
2964 VkSwapchainKHR m_swapchainKHR;
2965 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002966
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002967 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
2968
2969 class DebugReportCallbackEXT
2970 {
2971 public:
2972 DebugReportCallbackEXT()
2973 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2974 {}
2975
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002976 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002977 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2978 {}
2979
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002980 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
2981 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002982 {}
2983
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002984#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002985 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002986 {
2987 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002988 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002989 }
2990#endif
2991
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002992 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002993 {
2994 m_debugReportCallbackEXT = VK_NULL_HANDLE;
2995 return *this;
2996 }
2997
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002998 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002999 {
3000 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3001 }
3002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003003 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003004 {
3005 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3006 }
3007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003008 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003009 {
3010 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3011 }
3012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003013
3014
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003015 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003016 {
3017 return m_debugReportCallbackEXT;
3018 }
3019
3020 explicit operator bool() const
3021 {
3022 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3023 }
3024
3025 bool operator!() const
3026 {
3027 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3028 }
3029
3030 private:
3031 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3032 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003033
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003034 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3035
3036 struct Offset2D
3037 {
3038 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3039 : x( x_ )
3040 , y( y_ )
3041 {
3042 }
3043
3044 Offset2D( VkOffset2D const & rhs )
3045 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003046 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003047 }
3048
3049 Offset2D& operator=( VkOffset2D const & rhs )
3050 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003051 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003052 return *this;
3053 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003054 Offset2D& setX( int32_t x_ )
3055 {
3056 x = x_;
3057 return *this;
3058 }
3059
3060 Offset2D& setY( int32_t y_ )
3061 {
3062 y = y_;
3063 return *this;
3064 }
3065
3066 operator const VkOffset2D&() const
3067 {
3068 return *reinterpret_cast<const VkOffset2D*>(this);
3069 }
3070
3071 bool operator==( Offset2D const& rhs ) const
3072 {
3073 return ( x == rhs.x )
3074 && ( y == rhs.y );
3075 }
3076
3077 bool operator!=( Offset2D const& rhs ) const
3078 {
3079 return !operator==( rhs );
3080 }
3081
3082 int32_t x;
3083 int32_t y;
3084 };
3085 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3086
3087 struct Offset3D
3088 {
3089 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3090 : x( x_ )
3091 , y( y_ )
3092 , z( z_ )
3093 {
3094 }
3095
3096 Offset3D( VkOffset3D const & rhs )
3097 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003098 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003099 }
3100
3101 Offset3D& operator=( VkOffset3D const & rhs )
3102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003103 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003104 return *this;
3105 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003106 Offset3D& setX( int32_t x_ )
3107 {
3108 x = x_;
3109 return *this;
3110 }
3111
3112 Offset3D& setY( int32_t y_ )
3113 {
3114 y = y_;
3115 return *this;
3116 }
3117
3118 Offset3D& setZ( int32_t z_ )
3119 {
3120 z = z_;
3121 return *this;
3122 }
3123
3124 operator const VkOffset3D&() const
3125 {
3126 return *reinterpret_cast<const VkOffset3D*>(this);
3127 }
3128
3129 bool operator==( Offset3D const& rhs ) const
3130 {
3131 return ( x == rhs.x )
3132 && ( y == rhs.y )
3133 && ( z == rhs.z );
3134 }
3135
3136 bool operator!=( Offset3D const& rhs ) const
3137 {
3138 return !operator==( rhs );
3139 }
3140
3141 int32_t x;
3142 int32_t y;
3143 int32_t z;
3144 };
3145 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3146
3147 struct Extent2D
3148 {
3149 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3150 : width( width_ )
3151 , height( height_ )
3152 {
3153 }
3154
3155 Extent2D( VkExtent2D const & rhs )
3156 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003157 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003158 }
3159
3160 Extent2D& operator=( VkExtent2D const & rhs )
3161 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003162 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 return *this;
3164 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003165 Extent2D& setWidth( uint32_t width_ )
3166 {
3167 width = width_;
3168 return *this;
3169 }
3170
3171 Extent2D& setHeight( uint32_t height_ )
3172 {
3173 height = height_;
3174 return *this;
3175 }
3176
3177 operator const VkExtent2D&() const
3178 {
3179 return *reinterpret_cast<const VkExtent2D*>(this);
3180 }
3181
3182 bool operator==( Extent2D const& rhs ) const
3183 {
3184 return ( width == rhs.width )
3185 && ( height == rhs.height );
3186 }
3187
3188 bool operator!=( Extent2D const& rhs ) const
3189 {
3190 return !operator==( rhs );
3191 }
3192
3193 uint32_t width;
3194 uint32_t height;
3195 };
3196 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3197
3198 struct Extent3D
3199 {
3200 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3201 : width( width_ )
3202 , height( height_ )
3203 , depth( depth_ )
3204 {
3205 }
3206
3207 Extent3D( VkExtent3D const & rhs )
3208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003209 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003210 }
3211
3212 Extent3D& operator=( VkExtent3D const & rhs )
3213 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003214 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003215 return *this;
3216 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003217 Extent3D& setWidth( uint32_t width_ )
3218 {
3219 width = width_;
3220 return *this;
3221 }
3222
3223 Extent3D& setHeight( uint32_t height_ )
3224 {
3225 height = height_;
3226 return *this;
3227 }
3228
3229 Extent3D& setDepth( uint32_t depth_ )
3230 {
3231 depth = depth_;
3232 return *this;
3233 }
3234
3235 operator const VkExtent3D&() const
3236 {
3237 return *reinterpret_cast<const VkExtent3D*>(this);
3238 }
3239
3240 bool operator==( Extent3D const& rhs ) const
3241 {
3242 return ( width == rhs.width )
3243 && ( height == rhs.height )
3244 && ( depth == rhs.depth );
3245 }
3246
3247 bool operator!=( Extent3D const& rhs ) const
3248 {
3249 return !operator==( rhs );
3250 }
3251
3252 uint32_t width;
3253 uint32_t height;
3254 uint32_t depth;
3255 };
3256 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3257
3258 struct Viewport
3259 {
3260 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3261 : x( x_ )
3262 , y( y_ )
3263 , width( width_ )
3264 , height( height_ )
3265 , minDepth( minDepth_ )
3266 , maxDepth( maxDepth_ )
3267 {
3268 }
3269
3270 Viewport( VkViewport const & rhs )
3271 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003272 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003273 }
3274
3275 Viewport& operator=( VkViewport const & rhs )
3276 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003277 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003278 return *this;
3279 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003280 Viewport& setX( float x_ )
3281 {
3282 x = x_;
3283 return *this;
3284 }
3285
3286 Viewport& setY( float y_ )
3287 {
3288 y = y_;
3289 return *this;
3290 }
3291
3292 Viewport& setWidth( float width_ )
3293 {
3294 width = width_;
3295 return *this;
3296 }
3297
3298 Viewport& setHeight( float height_ )
3299 {
3300 height = height_;
3301 return *this;
3302 }
3303
3304 Viewport& setMinDepth( float minDepth_ )
3305 {
3306 minDepth = minDepth_;
3307 return *this;
3308 }
3309
3310 Viewport& setMaxDepth( float maxDepth_ )
3311 {
3312 maxDepth = maxDepth_;
3313 return *this;
3314 }
3315
3316 operator const VkViewport&() const
3317 {
3318 return *reinterpret_cast<const VkViewport*>(this);
3319 }
3320
3321 bool operator==( Viewport const& rhs ) const
3322 {
3323 return ( x == rhs.x )
3324 && ( y == rhs.y )
3325 && ( width == rhs.width )
3326 && ( height == rhs.height )
3327 && ( minDepth == rhs.minDepth )
3328 && ( maxDepth == rhs.maxDepth );
3329 }
3330
3331 bool operator!=( Viewport const& rhs ) const
3332 {
3333 return !operator==( rhs );
3334 }
3335
3336 float x;
3337 float y;
3338 float width;
3339 float height;
3340 float minDepth;
3341 float maxDepth;
3342 };
3343 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3344
3345 struct Rect2D
3346 {
3347 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3348 : offset( offset_ )
3349 , extent( extent_ )
3350 {
3351 }
3352
3353 Rect2D( VkRect2D const & rhs )
3354 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003355 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003356 }
3357
3358 Rect2D& operator=( VkRect2D const & rhs )
3359 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003360 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003361 return *this;
3362 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003363 Rect2D& setOffset( Offset2D offset_ )
3364 {
3365 offset = offset_;
3366 return *this;
3367 }
3368
3369 Rect2D& setExtent( Extent2D extent_ )
3370 {
3371 extent = extent_;
3372 return *this;
3373 }
3374
3375 operator const VkRect2D&() const
3376 {
3377 return *reinterpret_cast<const VkRect2D*>(this);
3378 }
3379
3380 bool operator==( Rect2D const& rhs ) const
3381 {
3382 return ( offset == rhs.offset )
3383 && ( extent == rhs.extent );
3384 }
3385
3386 bool operator!=( Rect2D const& rhs ) const
3387 {
3388 return !operator==( rhs );
3389 }
3390
3391 Offset2D offset;
3392 Extent2D extent;
3393 };
3394 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3395
3396 struct ClearRect
3397 {
3398 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3399 : rect( rect_ )
3400 , baseArrayLayer( baseArrayLayer_ )
3401 , layerCount( layerCount_ )
3402 {
3403 }
3404
3405 ClearRect( VkClearRect const & rhs )
3406 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003407 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003408 }
3409
3410 ClearRect& operator=( VkClearRect const & rhs )
3411 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003412 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003413 return *this;
3414 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003415 ClearRect& setRect( Rect2D rect_ )
3416 {
3417 rect = rect_;
3418 return *this;
3419 }
3420
3421 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3422 {
3423 baseArrayLayer = baseArrayLayer_;
3424 return *this;
3425 }
3426
3427 ClearRect& setLayerCount( uint32_t layerCount_ )
3428 {
3429 layerCount = layerCount_;
3430 return *this;
3431 }
3432
3433 operator const VkClearRect&() const
3434 {
3435 return *reinterpret_cast<const VkClearRect*>(this);
3436 }
3437
3438 bool operator==( ClearRect const& rhs ) const
3439 {
3440 return ( rect == rhs.rect )
3441 && ( baseArrayLayer == rhs.baseArrayLayer )
3442 && ( layerCount == rhs.layerCount );
3443 }
3444
3445 bool operator!=( ClearRect const& rhs ) const
3446 {
3447 return !operator==( rhs );
3448 }
3449
3450 Rect2D rect;
3451 uint32_t baseArrayLayer;
3452 uint32_t layerCount;
3453 };
3454 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3455
3456 struct ExtensionProperties
3457 {
3458 operator const VkExtensionProperties&() const
3459 {
3460 return *reinterpret_cast<const VkExtensionProperties*>(this);
3461 }
3462
3463 bool operator==( ExtensionProperties const& rhs ) const
3464 {
3465 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3466 && ( specVersion == rhs.specVersion );
3467 }
3468
3469 bool operator!=( ExtensionProperties const& rhs ) const
3470 {
3471 return !operator==( rhs );
3472 }
3473
3474 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3475 uint32_t specVersion;
3476 };
3477 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3478
3479 struct LayerProperties
3480 {
3481 operator const VkLayerProperties&() const
3482 {
3483 return *reinterpret_cast<const VkLayerProperties*>(this);
3484 }
3485
3486 bool operator==( LayerProperties const& rhs ) const
3487 {
3488 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3489 && ( specVersion == rhs.specVersion )
3490 && ( implementationVersion == rhs.implementationVersion )
3491 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3492 }
3493
3494 bool operator!=( LayerProperties const& rhs ) const
3495 {
3496 return !operator==( rhs );
3497 }
3498
3499 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3500 uint32_t specVersion;
3501 uint32_t implementationVersion;
3502 char description[VK_MAX_DESCRIPTION_SIZE];
3503 };
3504 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3505
3506 struct AllocationCallbacks
3507 {
3508 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3509 : pUserData( pUserData_ )
3510 , pfnAllocation( pfnAllocation_ )
3511 , pfnReallocation( pfnReallocation_ )
3512 , pfnFree( pfnFree_ )
3513 , pfnInternalAllocation( pfnInternalAllocation_ )
3514 , pfnInternalFree( pfnInternalFree_ )
3515 {
3516 }
3517
3518 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3519 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003520 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003521 }
3522
3523 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003525 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003526 return *this;
3527 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003528 AllocationCallbacks& setPUserData( void* pUserData_ )
3529 {
3530 pUserData = pUserData_;
3531 return *this;
3532 }
3533
3534 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3535 {
3536 pfnAllocation = pfnAllocation_;
3537 return *this;
3538 }
3539
3540 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3541 {
3542 pfnReallocation = pfnReallocation_;
3543 return *this;
3544 }
3545
3546 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3547 {
3548 pfnFree = pfnFree_;
3549 return *this;
3550 }
3551
3552 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3553 {
3554 pfnInternalAllocation = pfnInternalAllocation_;
3555 return *this;
3556 }
3557
3558 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3559 {
3560 pfnInternalFree = pfnInternalFree_;
3561 return *this;
3562 }
3563
3564 operator const VkAllocationCallbacks&() const
3565 {
3566 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3567 }
3568
3569 bool operator==( AllocationCallbacks const& rhs ) const
3570 {
3571 return ( pUserData == rhs.pUserData )
3572 && ( pfnAllocation == rhs.pfnAllocation )
3573 && ( pfnReallocation == rhs.pfnReallocation )
3574 && ( pfnFree == rhs.pfnFree )
3575 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3576 && ( pfnInternalFree == rhs.pfnInternalFree );
3577 }
3578
3579 bool operator!=( AllocationCallbacks const& rhs ) const
3580 {
3581 return !operator==( rhs );
3582 }
3583
3584 void* pUserData;
3585 PFN_vkAllocationFunction pfnAllocation;
3586 PFN_vkReallocationFunction pfnReallocation;
3587 PFN_vkFreeFunction pfnFree;
3588 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3589 PFN_vkInternalFreeNotification pfnInternalFree;
3590 };
3591 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3592
3593 struct MemoryRequirements
3594 {
3595 operator const VkMemoryRequirements&() const
3596 {
3597 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3598 }
3599
3600 bool operator==( MemoryRequirements const& rhs ) const
3601 {
3602 return ( size == rhs.size )
3603 && ( alignment == rhs.alignment )
3604 && ( memoryTypeBits == rhs.memoryTypeBits );
3605 }
3606
3607 bool operator!=( MemoryRequirements const& rhs ) const
3608 {
3609 return !operator==( rhs );
3610 }
3611
3612 DeviceSize size;
3613 DeviceSize alignment;
3614 uint32_t memoryTypeBits;
3615 };
3616 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3617
3618 struct DescriptorBufferInfo
3619 {
3620 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3621 : buffer( buffer_ )
3622 , offset( offset_ )
3623 , range( range_ )
3624 {
3625 }
3626
3627 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003629 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003630 }
3631
3632 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003634 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003635 return *this;
3636 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003637 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3638 {
3639 buffer = buffer_;
3640 return *this;
3641 }
3642
3643 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3644 {
3645 offset = offset_;
3646 return *this;
3647 }
3648
3649 DescriptorBufferInfo& setRange( DeviceSize range_ )
3650 {
3651 range = range_;
3652 return *this;
3653 }
3654
3655 operator const VkDescriptorBufferInfo&() const
3656 {
3657 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3658 }
3659
3660 bool operator==( DescriptorBufferInfo const& rhs ) const
3661 {
3662 return ( buffer == rhs.buffer )
3663 && ( offset == rhs.offset )
3664 && ( range == rhs.range );
3665 }
3666
3667 bool operator!=( DescriptorBufferInfo const& rhs ) const
3668 {
3669 return !operator==( rhs );
3670 }
3671
3672 Buffer buffer;
3673 DeviceSize offset;
3674 DeviceSize range;
3675 };
3676 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3677
3678 struct SubresourceLayout
3679 {
3680 operator const VkSubresourceLayout&() const
3681 {
3682 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3683 }
3684
3685 bool operator==( SubresourceLayout const& rhs ) const
3686 {
3687 return ( offset == rhs.offset )
3688 && ( size == rhs.size )
3689 && ( rowPitch == rhs.rowPitch )
3690 && ( arrayPitch == rhs.arrayPitch )
3691 && ( depthPitch == rhs.depthPitch );
3692 }
3693
3694 bool operator!=( SubresourceLayout const& rhs ) const
3695 {
3696 return !operator==( rhs );
3697 }
3698
3699 DeviceSize offset;
3700 DeviceSize size;
3701 DeviceSize rowPitch;
3702 DeviceSize arrayPitch;
3703 DeviceSize depthPitch;
3704 };
3705 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3706
3707 struct BufferCopy
3708 {
3709 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3710 : srcOffset( srcOffset_ )
3711 , dstOffset( dstOffset_ )
3712 , size( size_ )
3713 {
3714 }
3715
3716 BufferCopy( VkBufferCopy const & rhs )
3717 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003718 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003719 }
3720
3721 BufferCopy& operator=( VkBufferCopy const & rhs )
3722 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003723 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003724 return *this;
3725 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003726 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3727 {
3728 srcOffset = srcOffset_;
3729 return *this;
3730 }
3731
3732 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3733 {
3734 dstOffset = dstOffset_;
3735 return *this;
3736 }
3737
3738 BufferCopy& setSize( DeviceSize size_ )
3739 {
3740 size = size_;
3741 return *this;
3742 }
3743
3744 operator const VkBufferCopy&() const
3745 {
3746 return *reinterpret_cast<const VkBufferCopy*>(this);
3747 }
3748
3749 bool operator==( BufferCopy const& rhs ) const
3750 {
3751 return ( srcOffset == rhs.srcOffset )
3752 && ( dstOffset == rhs.dstOffset )
3753 && ( size == rhs.size );
3754 }
3755
3756 bool operator!=( BufferCopy const& rhs ) const
3757 {
3758 return !operator==( rhs );
3759 }
3760
3761 DeviceSize srcOffset;
3762 DeviceSize dstOffset;
3763 DeviceSize size;
3764 };
3765 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3766
3767 struct SpecializationMapEntry
3768 {
3769 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3770 : constantID( constantID_ )
3771 , offset( offset_ )
3772 , size( size_ )
3773 {
3774 }
3775
3776 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3777 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003778 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003779 }
3780
3781 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3782 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003783 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003784 return *this;
3785 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003786 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
3787 {
3788 constantID = constantID_;
3789 return *this;
3790 }
3791
3792 SpecializationMapEntry& setOffset( uint32_t offset_ )
3793 {
3794 offset = offset_;
3795 return *this;
3796 }
3797
3798 SpecializationMapEntry& setSize( size_t size_ )
3799 {
3800 size = size_;
3801 return *this;
3802 }
3803
3804 operator const VkSpecializationMapEntry&() const
3805 {
3806 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
3807 }
3808
3809 bool operator==( SpecializationMapEntry const& rhs ) const
3810 {
3811 return ( constantID == rhs.constantID )
3812 && ( offset == rhs.offset )
3813 && ( size == rhs.size );
3814 }
3815
3816 bool operator!=( SpecializationMapEntry const& rhs ) const
3817 {
3818 return !operator==( rhs );
3819 }
3820
3821 uint32_t constantID;
3822 uint32_t offset;
3823 size_t size;
3824 };
3825 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
3826
3827 struct SpecializationInfo
3828 {
3829 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
3830 : mapEntryCount( mapEntryCount_ )
3831 , pMapEntries( pMapEntries_ )
3832 , dataSize( dataSize_ )
3833 , pData( pData_ )
3834 {
3835 }
3836
3837 SpecializationInfo( VkSpecializationInfo const & rhs )
3838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003839 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003840 }
3841
3842 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
3843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003844 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003845 return *this;
3846 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003847 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
3848 {
3849 mapEntryCount = mapEntryCount_;
3850 return *this;
3851 }
3852
3853 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
3854 {
3855 pMapEntries = pMapEntries_;
3856 return *this;
3857 }
3858
3859 SpecializationInfo& setDataSize( size_t dataSize_ )
3860 {
3861 dataSize = dataSize_;
3862 return *this;
3863 }
3864
3865 SpecializationInfo& setPData( const void* pData_ )
3866 {
3867 pData = pData_;
3868 return *this;
3869 }
3870
3871 operator const VkSpecializationInfo&() const
3872 {
3873 return *reinterpret_cast<const VkSpecializationInfo*>(this);
3874 }
3875
3876 bool operator==( SpecializationInfo const& rhs ) const
3877 {
3878 return ( mapEntryCount == rhs.mapEntryCount )
3879 && ( pMapEntries == rhs.pMapEntries )
3880 && ( dataSize == rhs.dataSize )
3881 && ( pData == rhs.pData );
3882 }
3883
3884 bool operator!=( SpecializationInfo const& rhs ) const
3885 {
3886 return !operator==( rhs );
3887 }
3888
3889 uint32_t mapEntryCount;
3890 const SpecializationMapEntry* pMapEntries;
3891 size_t dataSize;
3892 const void* pData;
3893 };
3894 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
3895
3896 union ClearColorValue
3897 {
3898 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
3899 {
3900 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3901 }
3902
3903 ClearColorValue( const std::array<int32_t,4>& int32_ )
3904 {
3905 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3906 }
3907
3908 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
3909 {
3910 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3911 }
3912
3913 ClearColorValue& setFloat32( std::array<float,4> float32_ )
3914 {
3915 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3916 return *this;
3917 }
3918
3919 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
3920 {
3921 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3922 return *this;
3923 }
3924
3925 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
3926 {
3927 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3928 return *this;
3929 }
3930
3931 operator VkClearColorValue const& () const
3932 {
3933 return *reinterpret_cast<const VkClearColorValue*>(this);
3934 }
3935
3936 float float32[4];
3937 int32_t int32[4];
3938 uint32_t uint32[4];
3939 };
3940
3941 struct ClearDepthStencilValue
3942 {
3943 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
3944 : depth( depth_ )
3945 , stencil( stencil_ )
3946 {
3947 }
3948
3949 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
3950 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003951 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003952 }
3953
3954 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
3955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003956 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003957 return *this;
3958 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003959 ClearDepthStencilValue& setDepth( float depth_ )
3960 {
3961 depth = depth_;
3962 return *this;
3963 }
3964
3965 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
3966 {
3967 stencil = stencil_;
3968 return *this;
3969 }
3970
3971 operator const VkClearDepthStencilValue&() const
3972 {
3973 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
3974 }
3975
3976 bool operator==( ClearDepthStencilValue const& rhs ) const
3977 {
3978 return ( depth == rhs.depth )
3979 && ( stencil == rhs.stencil );
3980 }
3981
3982 bool operator!=( ClearDepthStencilValue const& rhs ) const
3983 {
3984 return !operator==( rhs );
3985 }
3986
3987 float depth;
3988 uint32_t stencil;
3989 };
3990 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
3991
3992 union ClearValue
3993 {
3994 ClearValue( ClearColorValue color_ = ClearColorValue() )
3995 {
3996 color = color_;
3997 }
3998
3999 ClearValue( ClearDepthStencilValue depthStencil_ )
4000 {
4001 depthStencil = depthStencil_;
4002 }
4003
4004 ClearValue& setColor( ClearColorValue color_ )
4005 {
4006 color = color_;
4007 return *this;
4008 }
4009
4010 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4011 {
4012 depthStencil = depthStencil_;
4013 return *this;
4014 }
4015
4016 operator VkClearValue const& () const
4017 {
4018 return *reinterpret_cast<const VkClearValue*>(this);
4019 }
4020
4021#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4022 ClearColorValue color;
4023 ClearDepthStencilValue depthStencil;
4024#else
4025 VkClearColorValue color;
4026 VkClearDepthStencilValue depthStencil;
4027#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4028 };
4029
4030 struct PhysicalDeviceFeatures
4031 {
4032 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 )
4033 : robustBufferAccess( robustBufferAccess_ )
4034 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4035 , imageCubeArray( imageCubeArray_ )
4036 , independentBlend( independentBlend_ )
4037 , geometryShader( geometryShader_ )
4038 , tessellationShader( tessellationShader_ )
4039 , sampleRateShading( sampleRateShading_ )
4040 , dualSrcBlend( dualSrcBlend_ )
4041 , logicOp( logicOp_ )
4042 , multiDrawIndirect( multiDrawIndirect_ )
4043 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4044 , depthClamp( depthClamp_ )
4045 , depthBiasClamp( depthBiasClamp_ )
4046 , fillModeNonSolid( fillModeNonSolid_ )
4047 , depthBounds( depthBounds_ )
4048 , wideLines( wideLines_ )
4049 , largePoints( largePoints_ )
4050 , alphaToOne( alphaToOne_ )
4051 , multiViewport( multiViewport_ )
4052 , samplerAnisotropy( samplerAnisotropy_ )
4053 , textureCompressionETC2( textureCompressionETC2_ )
4054 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4055 , textureCompressionBC( textureCompressionBC_ )
4056 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4057 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4058 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4059 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4060 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4061 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4062 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4063 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4064 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4065 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4066 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4067 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4068 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4069 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4070 , shaderClipDistance( shaderClipDistance_ )
4071 , shaderCullDistance( shaderCullDistance_ )
4072 , shaderFloat64( shaderFloat64_ )
4073 , shaderInt64( shaderInt64_ )
4074 , shaderInt16( shaderInt16_ )
4075 , shaderResourceResidency( shaderResourceResidency_ )
4076 , shaderResourceMinLod( shaderResourceMinLod_ )
4077 , sparseBinding( sparseBinding_ )
4078 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4079 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4080 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4081 , sparseResidency2Samples( sparseResidency2Samples_ )
4082 , sparseResidency4Samples( sparseResidency4Samples_ )
4083 , sparseResidency8Samples( sparseResidency8Samples_ )
4084 , sparseResidency16Samples( sparseResidency16Samples_ )
4085 , sparseResidencyAliased( sparseResidencyAliased_ )
4086 , variableMultisampleRate( variableMultisampleRate_ )
4087 , inheritedQueries( inheritedQueries_ )
4088 {
4089 }
4090
4091 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4092 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004093 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004094 }
4095
4096 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4097 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004098 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004099 return *this;
4100 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004101 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4102 {
4103 robustBufferAccess = robustBufferAccess_;
4104 return *this;
4105 }
4106
4107 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4108 {
4109 fullDrawIndexUint32 = fullDrawIndexUint32_;
4110 return *this;
4111 }
4112
4113 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4114 {
4115 imageCubeArray = imageCubeArray_;
4116 return *this;
4117 }
4118
4119 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4120 {
4121 independentBlend = independentBlend_;
4122 return *this;
4123 }
4124
4125 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4126 {
4127 geometryShader = geometryShader_;
4128 return *this;
4129 }
4130
4131 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4132 {
4133 tessellationShader = tessellationShader_;
4134 return *this;
4135 }
4136
4137 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4138 {
4139 sampleRateShading = sampleRateShading_;
4140 return *this;
4141 }
4142
4143 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4144 {
4145 dualSrcBlend = dualSrcBlend_;
4146 return *this;
4147 }
4148
4149 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4150 {
4151 logicOp = logicOp_;
4152 return *this;
4153 }
4154
4155 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4156 {
4157 multiDrawIndirect = multiDrawIndirect_;
4158 return *this;
4159 }
4160
4161 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4162 {
4163 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4164 return *this;
4165 }
4166
4167 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4168 {
4169 depthClamp = depthClamp_;
4170 return *this;
4171 }
4172
4173 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4174 {
4175 depthBiasClamp = depthBiasClamp_;
4176 return *this;
4177 }
4178
4179 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4180 {
4181 fillModeNonSolid = fillModeNonSolid_;
4182 return *this;
4183 }
4184
4185 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4186 {
4187 depthBounds = depthBounds_;
4188 return *this;
4189 }
4190
4191 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4192 {
4193 wideLines = wideLines_;
4194 return *this;
4195 }
4196
4197 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4198 {
4199 largePoints = largePoints_;
4200 return *this;
4201 }
4202
4203 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4204 {
4205 alphaToOne = alphaToOne_;
4206 return *this;
4207 }
4208
4209 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4210 {
4211 multiViewport = multiViewport_;
4212 return *this;
4213 }
4214
4215 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4216 {
4217 samplerAnisotropy = samplerAnisotropy_;
4218 return *this;
4219 }
4220
4221 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4222 {
4223 textureCompressionETC2 = textureCompressionETC2_;
4224 return *this;
4225 }
4226
4227 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4228 {
4229 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4230 return *this;
4231 }
4232
4233 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4234 {
4235 textureCompressionBC = textureCompressionBC_;
4236 return *this;
4237 }
4238
4239 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4240 {
4241 occlusionQueryPrecise = occlusionQueryPrecise_;
4242 return *this;
4243 }
4244
4245 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4246 {
4247 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4248 return *this;
4249 }
4250
4251 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4252 {
4253 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4254 return *this;
4255 }
4256
4257 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4258 {
4259 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4260 return *this;
4261 }
4262
4263 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4264 {
4265 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4266 return *this;
4267 }
4268
4269 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4270 {
4271 shaderImageGatherExtended = shaderImageGatherExtended_;
4272 return *this;
4273 }
4274
4275 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4276 {
4277 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4278 return *this;
4279 }
4280
4281 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4282 {
4283 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4284 return *this;
4285 }
4286
4287 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4288 {
4289 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4290 return *this;
4291 }
4292
4293 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4294 {
4295 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4296 return *this;
4297 }
4298
4299 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4300 {
4301 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4302 return *this;
4303 }
4304
4305 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4306 {
4307 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4308 return *this;
4309 }
4310
4311 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4312 {
4313 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4314 return *this;
4315 }
4316
4317 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4318 {
4319 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4320 return *this;
4321 }
4322
4323 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4324 {
4325 shaderClipDistance = shaderClipDistance_;
4326 return *this;
4327 }
4328
4329 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4330 {
4331 shaderCullDistance = shaderCullDistance_;
4332 return *this;
4333 }
4334
4335 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4336 {
4337 shaderFloat64 = shaderFloat64_;
4338 return *this;
4339 }
4340
4341 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4342 {
4343 shaderInt64 = shaderInt64_;
4344 return *this;
4345 }
4346
4347 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4348 {
4349 shaderInt16 = shaderInt16_;
4350 return *this;
4351 }
4352
4353 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4354 {
4355 shaderResourceResidency = shaderResourceResidency_;
4356 return *this;
4357 }
4358
4359 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4360 {
4361 shaderResourceMinLod = shaderResourceMinLod_;
4362 return *this;
4363 }
4364
4365 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4366 {
4367 sparseBinding = sparseBinding_;
4368 return *this;
4369 }
4370
4371 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4372 {
4373 sparseResidencyBuffer = sparseResidencyBuffer_;
4374 return *this;
4375 }
4376
4377 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4378 {
4379 sparseResidencyImage2D = sparseResidencyImage2D_;
4380 return *this;
4381 }
4382
4383 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4384 {
4385 sparseResidencyImage3D = sparseResidencyImage3D_;
4386 return *this;
4387 }
4388
4389 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4390 {
4391 sparseResidency2Samples = sparseResidency2Samples_;
4392 return *this;
4393 }
4394
4395 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4396 {
4397 sparseResidency4Samples = sparseResidency4Samples_;
4398 return *this;
4399 }
4400
4401 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4402 {
4403 sparseResidency8Samples = sparseResidency8Samples_;
4404 return *this;
4405 }
4406
4407 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4408 {
4409 sparseResidency16Samples = sparseResidency16Samples_;
4410 return *this;
4411 }
4412
4413 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4414 {
4415 sparseResidencyAliased = sparseResidencyAliased_;
4416 return *this;
4417 }
4418
4419 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4420 {
4421 variableMultisampleRate = variableMultisampleRate_;
4422 return *this;
4423 }
4424
4425 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4426 {
4427 inheritedQueries = inheritedQueries_;
4428 return *this;
4429 }
4430
4431 operator const VkPhysicalDeviceFeatures&() const
4432 {
4433 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4434 }
4435
4436 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4437 {
4438 return ( robustBufferAccess == rhs.robustBufferAccess )
4439 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4440 && ( imageCubeArray == rhs.imageCubeArray )
4441 && ( independentBlend == rhs.independentBlend )
4442 && ( geometryShader == rhs.geometryShader )
4443 && ( tessellationShader == rhs.tessellationShader )
4444 && ( sampleRateShading == rhs.sampleRateShading )
4445 && ( dualSrcBlend == rhs.dualSrcBlend )
4446 && ( logicOp == rhs.logicOp )
4447 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4448 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4449 && ( depthClamp == rhs.depthClamp )
4450 && ( depthBiasClamp == rhs.depthBiasClamp )
4451 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4452 && ( depthBounds == rhs.depthBounds )
4453 && ( wideLines == rhs.wideLines )
4454 && ( largePoints == rhs.largePoints )
4455 && ( alphaToOne == rhs.alphaToOne )
4456 && ( multiViewport == rhs.multiViewport )
4457 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4458 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4459 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4460 && ( textureCompressionBC == rhs.textureCompressionBC )
4461 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4462 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4463 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4464 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4465 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4466 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4467 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4468 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4469 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4470 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4471 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4472 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4473 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4474 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4475 && ( shaderClipDistance == rhs.shaderClipDistance )
4476 && ( shaderCullDistance == rhs.shaderCullDistance )
4477 && ( shaderFloat64 == rhs.shaderFloat64 )
4478 && ( shaderInt64 == rhs.shaderInt64 )
4479 && ( shaderInt16 == rhs.shaderInt16 )
4480 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4481 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4482 && ( sparseBinding == rhs.sparseBinding )
4483 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4484 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4485 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4486 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4487 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4488 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4489 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4490 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4491 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4492 && ( inheritedQueries == rhs.inheritedQueries );
4493 }
4494
4495 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4496 {
4497 return !operator==( rhs );
4498 }
4499
4500 Bool32 robustBufferAccess;
4501 Bool32 fullDrawIndexUint32;
4502 Bool32 imageCubeArray;
4503 Bool32 independentBlend;
4504 Bool32 geometryShader;
4505 Bool32 tessellationShader;
4506 Bool32 sampleRateShading;
4507 Bool32 dualSrcBlend;
4508 Bool32 logicOp;
4509 Bool32 multiDrawIndirect;
4510 Bool32 drawIndirectFirstInstance;
4511 Bool32 depthClamp;
4512 Bool32 depthBiasClamp;
4513 Bool32 fillModeNonSolid;
4514 Bool32 depthBounds;
4515 Bool32 wideLines;
4516 Bool32 largePoints;
4517 Bool32 alphaToOne;
4518 Bool32 multiViewport;
4519 Bool32 samplerAnisotropy;
4520 Bool32 textureCompressionETC2;
4521 Bool32 textureCompressionASTC_LDR;
4522 Bool32 textureCompressionBC;
4523 Bool32 occlusionQueryPrecise;
4524 Bool32 pipelineStatisticsQuery;
4525 Bool32 vertexPipelineStoresAndAtomics;
4526 Bool32 fragmentStoresAndAtomics;
4527 Bool32 shaderTessellationAndGeometryPointSize;
4528 Bool32 shaderImageGatherExtended;
4529 Bool32 shaderStorageImageExtendedFormats;
4530 Bool32 shaderStorageImageMultisample;
4531 Bool32 shaderStorageImageReadWithoutFormat;
4532 Bool32 shaderStorageImageWriteWithoutFormat;
4533 Bool32 shaderUniformBufferArrayDynamicIndexing;
4534 Bool32 shaderSampledImageArrayDynamicIndexing;
4535 Bool32 shaderStorageBufferArrayDynamicIndexing;
4536 Bool32 shaderStorageImageArrayDynamicIndexing;
4537 Bool32 shaderClipDistance;
4538 Bool32 shaderCullDistance;
4539 Bool32 shaderFloat64;
4540 Bool32 shaderInt64;
4541 Bool32 shaderInt16;
4542 Bool32 shaderResourceResidency;
4543 Bool32 shaderResourceMinLod;
4544 Bool32 sparseBinding;
4545 Bool32 sparseResidencyBuffer;
4546 Bool32 sparseResidencyImage2D;
4547 Bool32 sparseResidencyImage3D;
4548 Bool32 sparseResidency2Samples;
4549 Bool32 sparseResidency4Samples;
4550 Bool32 sparseResidency8Samples;
4551 Bool32 sparseResidency16Samples;
4552 Bool32 sparseResidencyAliased;
4553 Bool32 variableMultisampleRate;
4554 Bool32 inheritedQueries;
4555 };
4556 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4557
4558 struct PhysicalDeviceSparseProperties
4559 {
4560 operator const VkPhysicalDeviceSparseProperties&() const
4561 {
4562 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4563 }
4564
4565 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4566 {
4567 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4568 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4569 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4570 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4571 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4572 }
4573
4574 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4575 {
4576 return !operator==( rhs );
4577 }
4578
4579 Bool32 residencyStandard2DBlockShape;
4580 Bool32 residencyStandard2DMultisampleBlockShape;
4581 Bool32 residencyStandard3DBlockShape;
4582 Bool32 residencyAlignedMipSize;
4583 Bool32 residencyNonResidentStrict;
4584 };
4585 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4586
4587 struct DrawIndirectCommand
4588 {
4589 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4590 : vertexCount( vertexCount_ )
4591 , instanceCount( instanceCount_ )
4592 , firstVertex( firstVertex_ )
4593 , firstInstance( firstInstance_ )
4594 {
4595 }
4596
4597 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4598 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004599 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004600 }
4601
4602 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004604 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004605 return *this;
4606 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004607 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4608 {
4609 vertexCount = vertexCount_;
4610 return *this;
4611 }
4612
4613 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4614 {
4615 instanceCount = instanceCount_;
4616 return *this;
4617 }
4618
4619 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4620 {
4621 firstVertex = firstVertex_;
4622 return *this;
4623 }
4624
4625 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4626 {
4627 firstInstance = firstInstance_;
4628 return *this;
4629 }
4630
4631 operator const VkDrawIndirectCommand&() const
4632 {
4633 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4634 }
4635
4636 bool operator==( DrawIndirectCommand const& rhs ) const
4637 {
4638 return ( vertexCount == rhs.vertexCount )
4639 && ( instanceCount == rhs.instanceCount )
4640 && ( firstVertex == rhs.firstVertex )
4641 && ( firstInstance == rhs.firstInstance );
4642 }
4643
4644 bool operator!=( DrawIndirectCommand const& rhs ) const
4645 {
4646 return !operator==( rhs );
4647 }
4648
4649 uint32_t vertexCount;
4650 uint32_t instanceCount;
4651 uint32_t firstVertex;
4652 uint32_t firstInstance;
4653 };
4654 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4655
4656 struct DrawIndexedIndirectCommand
4657 {
4658 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4659 : indexCount( indexCount_ )
4660 , instanceCount( instanceCount_ )
4661 , firstIndex( firstIndex_ )
4662 , vertexOffset( vertexOffset_ )
4663 , firstInstance( firstInstance_ )
4664 {
4665 }
4666
4667 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004669 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004670 }
4671
4672 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004674 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004675 return *this;
4676 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004677 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4678 {
4679 indexCount = indexCount_;
4680 return *this;
4681 }
4682
4683 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4684 {
4685 instanceCount = instanceCount_;
4686 return *this;
4687 }
4688
4689 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4690 {
4691 firstIndex = firstIndex_;
4692 return *this;
4693 }
4694
4695 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4696 {
4697 vertexOffset = vertexOffset_;
4698 return *this;
4699 }
4700
4701 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4702 {
4703 firstInstance = firstInstance_;
4704 return *this;
4705 }
4706
4707 operator const VkDrawIndexedIndirectCommand&() const
4708 {
4709 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4710 }
4711
4712 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4713 {
4714 return ( indexCount == rhs.indexCount )
4715 && ( instanceCount == rhs.instanceCount )
4716 && ( firstIndex == rhs.firstIndex )
4717 && ( vertexOffset == rhs.vertexOffset )
4718 && ( firstInstance == rhs.firstInstance );
4719 }
4720
4721 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4722 {
4723 return !operator==( rhs );
4724 }
4725
4726 uint32_t indexCount;
4727 uint32_t instanceCount;
4728 uint32_t firstIndex;
4729 int32_t vertexOffset;
4730 uint32_t firstInstance;
4731 };
4732 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4733
4734 struct DispatchIndirectCommand
4735 {
4736 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4737 : x( x_ )
4738 , y( y_ )
4739 , z( z_ )
4740 {
4741 }
4742
4743 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004745 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004746 }
4747
4748 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004750 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004751 return *this;
4752 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004753 DispatchIndirectCommand& setX( uint32_t x_ )
4754 {
4755 x = x_;
4756 return *this;
4757 }
4758
4759 DispatchIndirectCommand& setY( uint32_t y_ )
4760 {
4761 y = y_;
4762 return *this;
4763 }
4764
4765 DispatchIndirectCommand& setZ( uint32_t z_ )
4766 {
4767 z = z_;
4768 return *this;
4769 }
4770
4771 operator const VkDispatchIndirectCommand&() const
4772 {
4773 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4774 }
4775
4776 bool operator==( DispatchIndirectCommand const& rhs ) const
4777 {
4778 return ( x == rhs.x )
4779 && ( y == rhs.y )
4780 && ( z == rhs.z );
4781 }
4782
4783 bool operator!=( DispatchIndirectCommand const& rhs ) const
4784 {
4785 return !operator==( rhs );
4786 }
4787
4788 uint32_t x;
4789 uint32_t y;
4790 uint32_t z;
4791 };
4792 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
4793
4794 struct DisplayPlanePropertiesKHR
4795 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004796 operator const VkDisplayPlanePropertiesKHR&() const
4797 {
4798 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
4799 }
4800
4801 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
4802 {
4803 return ( currentDisplay == rhs.currentDisplay )
4804 && ( currentStackIndex == rhs.currentStackIndex );
4805 }
4806
4807 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
4808 {
4809 return !operator==( rhs );
4810 }
4811
4812 DisplayKHR currentDisplay;
4813 uint32_t currentStackIndex;
4814 };
4815 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
4816
4817 struct DisplayModeParametersKHR
4818 {
4819 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
4820 : visibleRegion( visibleRegion_ )
4821 , refreshRate( refreshRate_ )
4822 {
4823 }
4824
4825 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
4826 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004827 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004828 }
4829
4830 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
4831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004832 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004833 return *this;
4834 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004835 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
4836 {
4837 visibleRegion = visibleRegion_;
4838 return *this;
4839 }
4840
4841 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
4842 {
4843 refreshRate = refreshRate_;
4844 return *this;
4845 }
4846
4847 operator const VkDisplayModeParametersKHR&() const
4848 {
4849 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
4850 }
4851
4852 bool operator==( DisplayModeParametersKHR const& rhs ) const
4853 {
4854 return ( visibleRegion == rhs.visibleRegion )
4855 && ( refreshRate == rhs.refreshRate );
4856 }
4857
4858 bool operator!=( DisplayModeParametersKHR const& rhs ) const
4859 {
4860 return !operator==( rhs );
4861 }
4862
4863 Extent2D visibleRegion;
4864 uint32_t refreshRate;
4865 };
4866 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
4867
4868 struct DisplayModePropertiesKHR
4869 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004870 operator const VkDisplayModePropertiesKHR&() const
4871 {
4872 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
4873 }
4874
4875 bool operator==( DisplayModePropertiesKHR const& rhs ) const
4876 {
4877 return ( displayMode == rhs.displayMode )
4878 && ( parameters == rhs.parameters );
4879 }
4880
4881 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
4882 {
4883 return !operator==( rhs );
4884 }
4885
4886 DisplayModeKHR displayMode;
4887 DisplayModeParametersKHR parameters;
4888 };
4889 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
4890
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004891 struct RectLayerKHR
4892 {
4893 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
4894 : offset( offset_ )
4895 , extent( extent_ )
4896 , layer( layer_ )
4897 {
4898 }
4899
4900 RectLayerKHR( VkRectLayerKHR const & rhs )
4901 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004902 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004903 }
4904
4905 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
4906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004907 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004908 return *this;
4909 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004910 RectLayerKHR& setOffset( Offset2D offset_ )
4911 {
4912 offset = offset_;
4913 return *this;
4914 }
4915
4916 RectLayerKHR& setExtent( Extent2D extent_ )
4917 {
4918 extent = extent_;
4919 return *this;
4920 }
4921
4922 RectLayerKHR& setLayer( uint32_t layer_ )
4923 {
4924 layer = layer_;
4925 return *this;
4926 }
4927
4928 operator const VkRectLayerKHR&() const
4929 {
4930 return *reinterpret_cast<const VkRectLayerKHR*>(this);
4931 }
4932
4933 bool operator==( RectLayerKHR const& rhs ) const
4934 {
4935 return ( offset == rhs.offset )
4936 && ( extent == rhs.extent )
4937 && ( layer == rhs.layer );
4938 }
4939
4940 bool operator!=( RectLayerKHR const& rhs ) const
4941 {
4942 return !operator==( rhs );
4943 }
4944
4945 Offset2D offset;
4946 Extent2D extent;
4947 uint32_t layer;
4948 };
4949 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
4950
4951 struct PresentRegionKHR
4952 {
4953 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
4954 : rectangleCount( rectangleCount_ )
4955 , pRectangles( pRectangles_ )
4956 {
4957 }
4958
4959 PresentRegionKHR( VkPresentRegionKHR const & rhs )
4960 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004961 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004962 }
4963
4964 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
4965 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004966 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004967 return *this;
4968 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004969 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
4970 {
4971 rectangleCount = rectangleCount_;
4972 return *this;
4973 }
4974
4975 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
4976 {
4977 pRectangles = pRectangles_;
4978 return *this;
4979 }
4980
4981 operator const VkPresentRegionKHR&() const
4982 {
4983 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
4984 }
4985
4986 bool operator==( PresentRegionKHR const& rhs ) const
4987 {
4988 return ( rectangleCount == rhs.rectangleCount )
4989 && ( pRectangles == rhs.pRectangles );
4990 }
4991
4992 bool operator!=( PresentRegionKHR const& rhs ) const
4993 {
4994 return !operator==( rhs );
4995 }
4996
4997 uint32_t rectangleCount;
4998 const RectLayerKHR* pRectangles;
4999 };
5000 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5001
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005002 struct XYColorEXT
5003 {
5004 XYColorEXT( float x_ = 0, float y_ = 0 )
5005 : x( x_ )
5006 , y( y_ )
5007 {
5008 }
5009
5010 XYColorEXT( VkXYColorEXT const & rhs )
5011 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005012 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005013 }
5014
5015 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005017 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005018 return *this;
5019 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005020 XYColorEXT& setX( float x_ )
5021 {
5022 x = x_;
5023 return *this;
5024 }
5025
5026 XYColorEXT& setY( float y_ )
5027 {
5028 y = y_;
5029 return *this;
5030 }
5031
5032 operator const VkXYColorEXT&() const
5033 {
5034 return *reinterpret_cast<const VkXYColorEXT*>(this);
5035 }
5036
5037 bool operator==( XYColorEXT const& rhs ) const
5038 {
5039 return ( x == rhs.x )
5040 && ( y == rhs.y );
5041 }
5042
5043 bool operator!=( XYColorEXT const& rhs ) const
5044 {
5045 return !operator==( rhs );
5046 }
5047
5048 float x;
5049 float y;
5050 };
5051 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5052
5053 struct RefreshCycleDurationGOOGLE
5054 {
5055 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5056 : refreshDuration( refreshDuration_ )
5057 {
5058 }
5059
5060 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5061 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005062 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005063 }
5064
5065 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005067 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005068 return *this;
5069 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005070 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5071 {
5072 refreshDuration = refreshDuration_;
5073 return *this;
5074 }
5075
5076 operator const VkRefreshCycleDurationGOOGLE&() const
5077 {
5078 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5079 }
5080
5081 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5082 {
5083 return ( refreshDuration == rhs.refreshDuration );
5084 }
5085
5086 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5087 {
5088 return !operator==( rhs );
5089 }
5090
5091 uint64_t refreshDuration;
5092 };
5093 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5094
5095 struct PastPresentationTimingGOOGLE
5096 {
5097 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5098 : presentID( presentID_ )
5099 , desiredPresentTime( desiredPresentTime_ )
5100 , actualPresentTime( actualPresentTime_ )
5101 , earliestPresentTime( earliestPresentTime_ )
5102 , presentMargin( presentMargin_ )
5103 {
5104 }
5105
5106 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5107 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005108 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005109 }
5110
5111 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5112 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005113 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005114 return *this;
5115 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005116 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5117 {
5118 presentID = presentID_;
5119 return *this;
5120 }
5121
5122 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5123 {
5124 desiredPresentTime = desiredPresentTime_;
5125 return *this;
5126 }
5127
5128 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5129 {
5130 actualPresentTime = actualPresentTime_;
5131 return *this;
5132 }
5133
5134 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5135 {
5136 earliestPresentTime = earliestPresentTime_;
5137 return *this;
5138 }
5139
5140 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5141 {
5142 presentMargin = presentMargin_;
5143 return *this;
5144 }
5145
5146 operator const VkPastPresentationTimingGOOGLE&() const
5147 {
5148 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5149 }
5150
5151 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5152 {
5153 return ( presentID == rhs.presentID )
5154 && ( desiredPresentTime == rhs.desiredPresentTime )
5155 && ( actualPresentTime == rhs.actualPresentTime )
5156 && ( earliestPresentTime == rhs.earliestPresentTime )
5157 && ( presentMargin == rhs.presentMargin );
5158 }
5159
5160 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5161 {
5162 return !operator==( rhs );
5163 }
5164
5165 uint32_t presentID;
5166 uint64_t desiredPresentTime;
5167 uint64_t actualPresentTime;
5168 uint64_t earliestPresentTime;
5169 uint64_t presentMargin;
5170 };
5171 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5172
5173 struct PresentTimeGOOGLE
5174 {
5175 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5176 : presentID( presentID_ )
5177 , desiredPresentTime( desiredPresentTime_ )
5178 {
5179 }
5180
5181 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5182 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005183 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005184 }
5185
5186 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005188 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005189 return *this;
5190 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005191 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5192 {
5193 presentID = presentID_;
5194 return *this;
5195 }
5196
5197 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5198 {
5199 desiredPresentTime = desiredPresentTime_;
5200 return *this;
5201 }
5202
5203 operator const VkPresentTimeGOOGLE&() const
5204 {
5205 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5206 }
5207
5208 bool operator==( PresentTimeGOOGLE const& rhs ) const
5209 {
5210 return ( presentID == rhs.presentID )
5211 && ( desiredPresentTime == rhs.desiredPresentTime );
5212 }
5213
5214 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5215 {
5216 return !operator==( rhs );
5217 }
5218
5219 uint32_t presentID;
5220 uint64_t desiredPresentTime;
5221 };
5222 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5223
Mark Young0f183a82017-02-28 09:58:04 -07005224 struct ViewportWScalingNV
5225 {
5226 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5227 : xcoeff( xcoeff_ )
5228 , ycoeff( ycoeff_ )
5229 {
5230 }
5231
5232 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5233 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005234 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005235 }
5236
5237 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5238 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005239 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005240 return *this;
5241 }
Mark Young0f183a82017-02-28 09:58:04 -07005242 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5243 {
5244 xcoeff = xcoeff_;
5245 return *this;
5246 }
5247
5248 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5249 {
5250 ycoeff = ycoeff_;
5251 return *this;
5252 }
5253
5254 operator const VkViewportWScalingNV&() const
5255 {
5256 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5257 }
5258
5259 bool operator==( ViewportWScalingNV const& rhs ) const
5260 {
5261 return ( xcoeff == rhs.xcoeff )
5262 && ( ycoeff == rhs.ycoeff );
5263 }
5264
5265 bool operator!=( ViewportWScalingNV const& rhs ) const
5266 {
5267 return !operator==( rhs );
5268 }
5269
5270 float xcoeff;
5271 float ycoeff;
5272 };
5273 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5274
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005275 enum class ImageLayout
5276 {
5277 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5278 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5279 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5280 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5281 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5282 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5283 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5284 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5285 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005286 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
5287 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005288 };
5289
5290 struct DescriptorImageInfo
5291 {
5292 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5293 : sampler( sampler_ )
5294 , imageView( imageView_ )
5295 , imageLayout( imageLayout_ )
5296 {
5297 }
5298
5299 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5300 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005301 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005302 }
5303
5304 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5305 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005306 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005307 return *this;
5308 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005309 DescriptorImageInfo& setSampler( Sampler sampler_ )
5310 {
5311 sampler = sampler_;
5312 return *this;
5313 }
5314
5315 DescriptorImageInfo& setImageView( ImageView imageView_ )
5316 {
5317 imageView = imageView_;
5318 return *this;
5319 }
5320
5321 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5322 {
5323 imageLayout = imageLayout_;
5324 return *this;
5325 }
5326
5327 operator const VkDescriptorImageInfo&() const
5328 {
5329 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5330 }
5331
5332 bool operator==( DescriptorImageInfo const& rhs ) const
5333 {
5334 return ( sampler == rhs.sampler )
5335 && ( imageView == rhs.imageView )
5336 && ( imageLayout == rhs.imageLayout );
5337 }
5338
5339 bool operator!=( DescriptorImageInfo const& rhs ) const
5340 {
5341 return !operator==( rhs );
5342 }
5343
5344 Sampler sampler;
5345 ImageView imageView;
5346 ImageLayout imageLayout;
5347 };
5348 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5349
5350 struct AttachmentReference
5351 {
5352 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5353 : attachment( attachment_ )
5354 , layout( layout_ )
5355 {
5356 }
5357
5358 AttachmentReference( VkAttachmentReference const & rhs )
5359 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005360 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005361 }
5362
5363 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5364 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005365 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005366 return *this;
5367 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005368 AttachmentReference& setAttachment( uint32_t attachment_ )
5369 {
5370 attachment = attachment_;
5371 return *this;
5372 }
5373
5374 AttachmentReference& setLayout( ImageLayout layout_ )
5375 {
5376 layout = layout_;
5377 return *this;
5378 }
5379
5380 operator const VkAttachmentReference&() const
5381 {
5382 return *reinterpret_cast<const VkAttachmentReference*>(this);
5383 }
5384
5385 bool operator==( AttachmentReference const& rhs ) const
5386 {
5387 return ( attachment == rhs.attachment )
5388 && ( layout == rhs.layout );
5389 }
5390
5391 bool operator!=( AttachmentReference const& rhs ) const
5392 {
5393 return !operator==( rhs );
5394 }
5395
5396 uint32_t attachment;
5397 ImageLayout layout;
5398 };
5399 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5400
5401 enum class AttachmentLoadOp
5402 {
5403 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5404 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5405 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5406 };
5407
5408 enum class AttachmentStoreOp
5409 {
5410 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5411 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5412 };
5413
5414 enum class ImageType
5415 {
5416 e1D = VK_IMAGE_TYPE_1D,
5417 e2D = VK_IMAGE_TYPE_2D,
5418 e3D = VK_IMAGE_TYPE_3D
5419 };
5420
5421 enum class ImageTiling
5422 {
5423 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5424 eLinear = VK_IMAGE_TILING_LINEAR
5425 };
5426
5427 enum class ImageViewType
5428 {
5429 e1D = VK_IMAGE_VIEW_TYPE_1D,
5430 e2D = VK_IMAGE_VIEW_TYPE_2D,
5431 e3D = VK_IMAGE_VIEW_TYPE_3D,
5432 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5433 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5434 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5435 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5436 };
5437
5438 enum class CommandBufferLevel
5439 {
5440 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5441 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5442 };
5443
5444 enum class ComponentSwizzle
5445 {
5446 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5447 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5448 eOne = VK_COMPONENT_SWIZZLE_ONE,
5449 eR = VK_COMPONENT_SWIZZLE_R,
5450 eG = VK_COMPONENT_SWIZZLE_G,
5451 eB = VK_COMPONENT_SWIZZLE_B,
5452 eA = VK_COMPONENT_SWIZZLE_A
5453 };
5454
5455 struct ComponentMapping
5456 {
5457 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5458 : r( r_ )
5459 , g( g_ )
5460 , b( b_ )
5461 , a( a_ )
5462 {
5463 }
5464
5465 ComponentMapping( VkComponentMapping const & rhs )
5466 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005467 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005468 }
5469
5470 ComponentMapping& operator=( VkComponentMapping const & rhs )
5471 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005472 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005473 return *this;
5474 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005475 ComponentMapping& setR( ComponentSwizzle r_ )
5476 {
5477 r = r_;
5478 return *this;
5479 }
5480
5481 ComponentMapping& setG( ComponentSwizzle g_ )
5482 {
5483 g = g_;
5484 return *this;
5485 }
5486
5487 ComponentMapping& setB( ComponentSwizzle b_ )
5488 {
5489 b = b_;
5490 return *this;
5491 }
5492
5493 ComponentMapping& setA( ComponentSwizzle a_ )
5494 {
5495 a = a_;
5496 return *this;
5497 }
5498
5499 operator const VkComponentMapping&() const
5500 {
5501 return *reinterpret_cast<const VkComponentMapping*>(this);
5502 }
5503
5504 bool operator==( ComponentMapping const& rhs ) const
5505 {
5506 return ( r == rhs.r )
5507 && ( g == rhs.g )
5508 && ( b == rhs.b )
5509 && ( a == rhs.a );
5510 }
5511
5512 bool operator!=( ComponentMapping const& rhs ) const
5513 {
5514 return !operator==( rhs );
5515 }
5516
5517 ComponentSwizzle r;
5518 ComponentSwizzle g;
5519 ComponentSwizzle b;
5520 ComponentSwizzle a;
5521 };
5522 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5523
5524 enum class DescriptorType
5525 {
5526 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5527 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5528 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5529 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5530 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5531 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5532 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5533 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5534 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5535 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5536 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5537 };
5538
5539 struct DescriptorPoolSize
5540 {
5541 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5542 : type( type_ )
5543 , descriptorCount( descriptorCount_ )
5544 {
5545 }
5546
5547 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5548 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005549 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005550 }
5551
5552 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5553 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005554 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005555 return *this;
5556 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005557 DescriptorPoolSize& setType( DescriptorType type_ )
5558 {
5559 type = type_;
5560 return *this;
5561 }
5562
5563 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5564 {
5565 descriptorCount = descriptorCount_;
5566 return *this;
5567 }
5568
5569 operator const VkDescriptorPoolSize&() const
5570 {
5571 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5572 }
5573
5574 bool operator==( DescriptorPoolSize const& rhs ) const
5575 {
5576 return ( type == rhs.type )
5577 && ( descriptorCount == rhs.descriptorCount );
5578 }
5579
5580 bool operator!=( DescriptorPoolSize const& rhs ) const
5581 {
5582 return !operator==( rhs );
5583 }
5584
5585 DescriptorType type;
5586 uint32_t descriptorCount;
5587 };
5588 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5589
Mark Young0f183a82017-02-28 09:58:04 -07005590 struct DescriptorUpdateTemplateEntryKHR
5591 {
5592 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 )
5593 : dstBinding( dstBinding_ )
5594 , dstArrayElement( dstArrayElement_ )
5595 , descriptorCount( descriptorCount_ )
5596 , descriptorType( descriptorType_ )
5597 , offset( offset_ )
5598 , stride( stride_ )
5599 {
5600 }
5601
5602 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005604 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005605 }
5606
5607 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5608 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005609 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005610 return *this;
5611 }
Mark Young0f183a82017-02-28 09:58:04 -07005612 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5613 {
5614 dstBinding = dstBinding_;
5615 return *this;
5616 }
5617
5618 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5619 {
5620 dstArrayElement = dstArrayElement_;
5621 return *this;
5622 }
5623
5624 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5625 {
5626 descriptorCount = descriptorCount_;
5627 return *this;
5628 }
5629
5630 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5631 {
5632 descriptorType = descriptorType_;
5633 return *this;
5634 }
5635
5636 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5637 {
5638 offset = offset_;
5639 return *this;
5640 }
5641
5642 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5643 {
5644 stride = stride_;
5645 return *this;
5646 }
5647
5648 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5649 {
5650 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5651 }
5652
5653 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5654 {
5655 return ( dstBinding == rhs.dstBinding )
5656 && ( dstArrayElement == rhs.dstArrayElement )
5657 && ( descriptorCount == rhs.descriptorCount )
5658 && ( descriptorType == rhs.descriptorType )
5659 && ( offset == rhs.offset )
5660 && ( stride == rhs.stride );
5661 }
5662
5663 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5664 {
5665 return !operator==( rhs );
5666 }
5667
5668 uint32_t dstBinding;
5669 uint32_t dstArrayElement;
5670 uint32_t descriptorCount;
5671 DescriptorType descriptorType;
5672 size_t offset;
5673 size_t stride;
5674 };
5675 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5676
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005677 enum class QueryType
5678 {
5679 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5680 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5681 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5682 };
5683
5684 enum class BorderColor
5685 {
5686 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5687 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5688 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5689 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5690 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5691 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5692 };
5693
5694 enum class PipelineBindPoint
5695 {
5696 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5697 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5698 };
5699
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005700 enum class PipelineCacheHeaderVersion
5701 {
5702 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5703 };
5704
5705 enum class PrimitiveTopology
5706 {
5707 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5708 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5709 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5710 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5711 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5712 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5713 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5714 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5715 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5716 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5717 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5718 };
5719
5720 enum class SharingMode
5721 {
5722 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5723 eConcurrent = VK_SHARING_MODE_CONCURRENT
5724 };
5725
5726 enum class IndexType
5727 {
5728 eUint16 = VK_INDEX_TYPE_UINT16,
5729 eUint32 = VK_INDEX_TYPE_UINT32
5730 };
5731
5732 enum class Filter
5733 {
5734 eNearest = VK_FILTER_NEAREST,
5735 eLinear = VK_FILTER_LINEAR,
5736 eCubicIMG = VK_FILTER_CUBIC_IMG
5737 };
5738
5739 enum class SamplerMipmapMode
5740 {
5741 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5742 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5743 };
5744
5745 enum class SamplerAddressMode
5746 {
5747 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5748 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5749 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5750 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5751 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5752 };
5753
5754 enum class CompareOp
5755 {
5756 eNever = VK_COMPARE_OP_NEVER,
5757 eLess = VK_COMPARE_OP_LESS,
5758 eEqual = VK_COMPARE_OP_EQUAL,
5759 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5760 eGreater = VK_COMPARE_OP_GREATER,
5761 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5762 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5763 eAlways = VK_COMPARE_OP_ALWAYS
5764 };
5765
5766 enum class PolygonMode
5767 {
5768 eFill = VK_POLYGON_MODE_FILL,
5769 eLine = VK_POLYGON_MODE_LINE,
5770 ePoint = VK_POLYGON_MODE_POINT
5771 };
5772
5773 enum class CullModeFlagBits
5774 {
5775 eNone = VK_CULL_MODE_NONE,
5776 eFront = VK_CULL_MODE_FRONT_BIT,
5777 eBack = VK_CULL_MODE_BACK_BIT,
5778 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5779 };
5780
5781 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5782
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005783 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005784 {
5785 return CullModeFlags( bit0 ) | bit1;
5786 }
5787
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005788 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5789 {
5790 return ~( CullModeFlags( bits ) );
5791 }
5792
5793 template <> struct FlagTraits<CullModeFlagBits>
5794 {
5795 enum
5796 {
5797 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5798 };
5799 };
5800
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005801 enum class FrontFace
5802 {
5803 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5804 eClockwise = VK_FRONT_FACE_CLOCKWISE
5805 };
5806
5807 enum class BlendFactor
5808 {
5809 eZero = VK_BLEND_FACTOR_ZERO,
5810 eOne = VK_BLEND_FACTOR_ONE,
5811 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5812 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5813 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5814 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5815 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5816 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5817 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5818 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5819 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5820 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5821 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5822 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5823 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5824 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5825 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5826 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5827 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5828 };
5829
5830 enum class BlendOp
5831 {
5832 eAdd = VK_BLEND_OP_ADD,
5833 eSubtract = VK_BLEND_OP_SUBTRACT,
5834 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5835 eMin = VK_BLEND_OP_MIN,
5836 eMax = VK_BLEND_OP_MAX
5837 };
5838
5839 enum class StencilOp
5840 {
5841 eKeep = VK_STENCIL_OP_KEEP,
5842 eZero = VK_STENCIL_OP_ZERO,
5843 eReplace = VK_STENCIL_OP_REPLACE,
5844 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5845 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5846 eInvert = VK_STENCIL_OP_INVERT,
5847 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5848 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5849 };
5850
5851 struct StencilOpState
5852 {
5853 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 )
5854 : failOp( failOp_ )
5855 , passOp( passOp_ )
5856 , depthFailOp( depthFailOp_ )
5857 , compareOp( compareOp_ )
5858 , compareMask( compareMask_ )
5859 , writeMask( writeMask_ )
5860 , reference( reference_ )
5861 {
5862 }
5863
5864 StencilOpState( VkStencilOpState const & rhs )
5865 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005866 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005867 }
5868
5869 StencilOpState& operator=( VkStencilOpState const & rhs )
5870 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005871 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005872 return *this;
5873 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005874 StencilOpState& setFailOp( StencilOp failOp_ )
5875 {
5876 failOp = failOp_;
5877 return *this;
5878 }
5879
5880 StencilOpState& setPassOp( StencilOp passOp_ )
5881 {
5882 passOp = passOp_;
5883 return *this;
5884 }
5885
5886 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5887 {
5888 depthFailOp = depthFailOp_;
5889 return *this;
5890 }
5891
5892 StencilOpState& setCompareOp( CompareOp compareOp_ )
5893 {
5894 compareOp = compareOp_;
5895 return *this;
5896 }
5897
5898 StencilOpState& setCompareMask( uint32_t compareMask_ )
5899 {
5900 compareMask = compareMask_;
5901 return *this;
5902 }
5903
5904 StencilOpState& setWriteMask( uint32_t writeMask_ )
5905 {
5906 writeMask = writeMask_;
5907 return *this;
5908 }
5909
5910 StencilOpState& setReference( uint32_t reference_ )
5911 {
5912 reference = reference_;
5913 return *this;
5914 }
5915
5916 operator const VkStencilOpState&() const
5917 {
5918 return *reinterpret_cast<const VkStencilOpState*>(this);
5919 }
5920
5921 bool operator==( StencilOpState const& rhs ) const
5922 {
5923 return ( failOp == rhs.failOp )
5924 && ( passOp == rhs.passOp )
5925 && ( depthFailOp == rhs.depthFailOp )
5926 && ( compareOp == rhs.compareOp )
5927 && ( compareMask == rhs.compareMask )
5928 && ( writeMask == rhs.writeMask )
5929 && ( reference == rhs.reference );
5930 }
5931
5932 bool operator!=( StencilOpState const& rhs ) const
5933 {
5934 return !operator==( rhs );
5935 }
5936
5937 StencilOp failOp;
5938 StencilOp passOp;
5939 StencilOp depthFailOp;
5940 CompareOp compareOp;
5941 uint32_t compareMask;
5942 uint32_t writeMask;
5943 uint32_t reference;
5944 };
5945 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5946
5947 enum class LogicOp
5948 {
5949 eClear = VK_LOGIC_OP_CLEAR,
5950 eAnd = VK_LOGIC_OP_AND,
5951 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
5952 eCopy = VK_LOGIC_OP_COPY,
5953 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
5954 eNoOp = VK_LOGIC_OP_NO_OP,
5955 eXor = VK_LOGIC_OP_XOR,
5956 eOr = VK_LOGIC_OP_OR,
5957 eNor = VK_LOGIC_OP_NOR,
5958 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
5959 eInvert = VK_LOGIC_OP_INVERT,
5960 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
5961 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
5962 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
5963 eNand = VK_LOGIC_OP_NAND,
5964 eSet = VK_LOGIC_OP_SET
5965 };
5966
5967 enum class InternalAllocationType
5968 {
5969 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
5970 };
5971
5972 enum class SystemAllocationScope
5973 {
5974 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
5975 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
5976 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
5977 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
5978 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
5979 };
5980
5981 enum class PhysicalDeviceType
5982 {
5983 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
5984 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
5985 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
5986 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
5987 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
5988 };
5989
5990 enum class VertexInputRate
5991 {
5992 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
5993 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
5994 };
5995
5996 struct VertexInputBindingDescription
5997 {
5998 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
5999 : binding( binding_ )
6000 , stride( stride_ )
6001 , inputRate( inputRate_ )
6002 {
6003 }
6004
6005 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6006 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006007 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006008 }
6009
6010 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6011 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006012 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006013 return *this;
6014 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006015 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6016 {
6017 binding = binding_;
6018 return *this;
6019 }
6020
6021 VertexInputBindingDescription& setStride( uint32_t stride_ )
6022 {
6023 stride = stride_;
6024 return *this;
6025 }
6026
6027 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6028 {
6029 inputRate = inputRate_;
6030 return *this;
6031 }
6032
6033 operator const VkVertexInputBindingDescription&() const
6034 {
6035 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6036 }
6037
6038 bool operator==( VertexInputBindingDescription const& rhs ) const
6039 {
6040 return ( binding == rhs.binding )
6041 && ( stride == rhs.stride )
6042 && ( inputRate == rhs.inputRate );
6043 }
6044
6045 bool operator!=( VertexInputBindingDescription const& rhs ) const
6046 {
6047 return !operator==( rhs );
6048 }
6049
6050 uint32_t binding;
6051 uint32_t stride;
6052 VertexInputRate inputRate;
6053 };
6054 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6055
6056 enum class Format
6057 {
6058 eUndefined = VK_FORMAT_UNDEFINED,
6059 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6060 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6061 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6062 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6063 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6064 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6065 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6066 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6067 eR8Unorm = VK_FORMAT_R8_UNORM,
6068 eR8Snorm = VK_FORMAT_R8_SNORM,
6069 eR8Uscaled = VK_FORMAT_R8_USCALED,
6070 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6071 eR8Uint = VK_FORMAT_R8_UINT,
6072 eR8Sint = VK_FORMAT_R8_SINT,
6073 eR8Srgb = VK_FORMAT_R8_SRGB,
6074 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6075 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6076 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6077 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6078 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6079 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6080 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6081 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6082 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6083 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6084 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6085 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6086 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6087 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6088 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6089 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6090 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6091 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6092 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6093 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6094 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6095 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6096 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6097 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6098 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6099 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6100 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6101 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6102 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6103 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6104 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6105 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6106 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6107 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6108 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6109 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6110 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6111 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6112 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6113 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6114 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6115 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6116 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6117 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6118 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6119 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6120 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6121 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6122 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6123 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6124 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6125 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6126 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6127 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6128 eR16Unorm = VK_FORMAT_R16_UNORM,
6129 eR16Snorm = VK_FORMAT_R16_SNORM,
6130 eR16Uscaled = VK_FORMAT_R16_USCALED,
6131 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6132 eR16Uint = VK_FORMAT_R16_UINT,
6133 eR16Sint = VK_FORMAT_R16_SINT,
6134 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6135 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6136 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6137 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6138 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6139 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6140 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6141 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6142 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6143 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6144 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6145 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6146 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6147 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6148 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6149 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6150 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6151 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6152 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6153 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6154 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6155 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6156 eR32Uint = VK_FORMAT_R32_UINT,
6157 eR32Sint = VK_FORMAT_R32_SINT,
6158 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6159 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6160 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6161 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6162 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6163 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6164 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6165 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6166 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6167 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6168 eR64Uint = VK_FORMAT_R64_UINT,
6169 eR64Sint = VK_FORMAT_R64_SINT,
6170 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6171 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6172 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6173 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6174 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6175 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6176 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6177 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6178 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6179 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6180 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6181 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6182 eD16Unorm = VK_FORMAT_D16_UNORM,
6183 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6184 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6185 eS8Uint = VK_FORMAT_S8_UINT,
6186 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6187 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6188 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6189 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6190 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6191 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6192 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6193 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6194 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6195 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6196 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6197 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6198 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6199 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6200 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6201 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6202 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6203 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6204 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6205 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6206 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6207 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6208 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6209 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6210 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6211 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6212 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6213 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6214 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6215 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6216 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6217 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6218 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6219 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6220 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6221 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6222 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6223 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6224 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6225 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6226 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6227 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6228 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6229 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6230 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6231 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6232 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6233 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6234 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6235 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6236 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6237 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6238 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6239 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6240 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6241 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006242 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6243 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6244 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6245 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6246 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6247 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6248 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6249 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6250 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006251 };
6252
6253 struct VertexInputAttributeDescription
6254 {
6255 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6256 : location( location_ )
6257 , binding( binding_ )
6258 , format( format_ )
6259 , offset( offset_ )
6260 {
6261 }
6262
6263 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006265 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006266 }
6267
6268 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6269 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006270 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006271 return *this;
6272 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006273 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6274 {
6275 location = location_;
6276 return *this;
6277 }
6278
6279 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6280 {
6281 binding = binding_;
6282 return *this;
6283 }
6284
6285 VertexInputAttributeDescription& setFormat( Format format_ )
6286 {
6287 format = format_;
6288 return *this;
6289 }
6290
6291 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6292 {
6293 offset = offset_;
6294 return *this;
6295 }
6296
6297 operator const VkVertexInputAttributeDescription&() const
6298 {
6299 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6300 }
6301
6302 bool operator==( VertexInputAttributeDescription const& rhs ) const
6303 {
6304 return ( location == rhs.location )
6305 && ( binding == rhs.binding )
6306 && ( format == rhs.format )
6307 && ( offset == rhs.offset );
6308 }
6309
6310 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6311 {
6312 return !operator==( rhs );
6313 }
6314
6315 uint32_t location;
6316 uint32_t binding;
6317 Format format;
6318 uint32_t offset;
6319 };
6320 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6321
6322 enum class StructureType
6323 {
6324 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6325 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6326 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6327 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6328 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6329 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6330 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6331 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6332 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6333 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6334 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6335 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6336 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6337 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6338 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6339 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6340 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6341 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6342 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6343 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6344 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6345 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6346 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6347 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6348 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6349 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6350 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6351 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6352 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6353 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6354 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6355 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6356 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6357 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6358 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6359 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6360 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6361 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6362 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6363 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6364 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6365 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6366 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6367 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6368 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6369 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6370 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6371 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6372 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6373 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6374 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6375 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6376 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6377 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6378 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6379 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6380 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6381 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6382 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6383 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6384 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6385 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6386 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6387 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6388 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6389 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6390 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006391 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006392 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006393 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6394 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6395 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006396 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6397 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6398 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6399 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006400 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006401 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6402 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6403 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6404 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6405 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6406 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6407 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6408 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6409 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006410 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6411 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6412 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6413 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6414 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6415 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6416 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6417 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6418 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6419 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6420 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6421 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6422 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006423 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006424 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006425 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6426 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
6427 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6428 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6429 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6430 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6431 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006432 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6433 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6434 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6435 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6436 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6437 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6438 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6439 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6440 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6441 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6442 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6443 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6444 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6445 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6446 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6447 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6448 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006449 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006450 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006451 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6452 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6453 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6454 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6455 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006456 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006457 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006458 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6459 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6460 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6461 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006462 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006463 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006464 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6465 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6466 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6467 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006468 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006469 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
6470 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6471 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6472 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006473 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6474 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006475 };
6476
6477 struct ApplicationInfo
6478 {
6479 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6480 : sType( StructureType::eApplicationInfo )
6481 , pNext( nullptr )
6482 , pApplicationName( pApplicationName_ )
6483 , applicationVersion( applicationVersion_ )
6484 , pEngineName( pEngineName_ )
6485 , engineVersion( engineVersion_ )
6486 , apiVersion( apiVersion_ )
6487 {
6488 }
6489
6490 ApplicationInfo( VkApplicationInfo const & rhs )
6491 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006492 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006493 }
6494
6495 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006497 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006498 return *this;
6499 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006500 ApplicationInfo& setPNext( const void* pNext_ )
6501 {
6502 pNext = pNext_;
6503 return *this;
6504 }
6505
6506 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6507 {
6508 pApplicationName = pApplicationName_;
6509 return *this;
6510 }
6511
6512 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6513 {
6514 applicationVersion = applicationVersion_;
6515 return *this;
6516 }
6517
6518 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6519 {
6520 pEngineName = pEngineName_;
6521 return *this;
6522 }
6523
6524 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6525 {
6526 engineVersion = engineVersion_;
6527 return *this;
6528 }
6529
6530 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6531 {
6532 apiVersion = apiVersion_;
6533 return *this;
6534 }
6535
6536 operator const VkApplicationInfo&() const
6537 {
6538 return *reinterpret_cast<const VkApplicationInfo*>(this);
6539 }
6540
6541 bool operator==( ApplicationInfo const& rhs ) const
6542 {
6543 return ( sType == rhs.sType )
6544 && ( pNext == rhs.pNext )
6545 && ( pApplicationName == rhs.pApplicationName )
6546 && ( applicationVersion == rhs.applicationVersion )
6547 && ( pEngineName == rhs.pEngineName )
6548 && ( engineVersion == rhs.engineVersion )
6549 && ( apiVersion == rhs.apiVersion );
6550 }
6551
6552 bool operator!=( ApplicationInfo const& rhs ) const
6553 {
6554 return !operator==( rhs );
6555 }
6556
6557 private:
6558 StructureType sType;
6559
6560 public:
6561 const void* pNext;
6562 const char* pApplicationName;
6563 uint32_t applicationVersion;
6564 const char* pEngineName;
6565 uint32_t engineVersion;
6566 uint32_t apiVersion;
6567 };
6568 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6569
6570 struct DeviceQueueCreateInfo
6571 {
6572 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6573 : sType( StructureType::eDeviceQueueCreateInfo )
6574 , pNext( nullptr )
6575 , flags( flags_ )
6576 , queueFamilyIndex( queueFamilyIndex_ )
6577 , queueCount( queueCount_ )
6578 , pQueuePriorities( pQueuePriorities_ )
6579 {
6580 }
6581
6582 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6583 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006584 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006585 }
6586
6587 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6588 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006589 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006590 return *this;
6591 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006592 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6593 {
6594 pNext = pNext_;
6595 return *this;
6596 }
6597
6598 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6599 {
6600 flags = flags_;
6601 return *this;
6602 }
6603
6604 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6605 {
6606 queueFamilyIndex = queueFamilyIndex_;
6607 return *this;
6608 }
6609
6610 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6611 {
6612 queueCount = queueCount_;
6613 return *this;
6614 }
6615
6616 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6617 {
6618 pQueuePriorities = pQueuePriorities_;
6619 return *this;
6620 }
6621
6622 operator const VkDeviceQueueCreateInfo&() const
6623 {
6624 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6625 }
6626
6627 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6628 {
6629 return ( sType == rhs.sType )
6630 && ( pNext == rhs.pNext )
6631 && ( flags == rhs.flags )
6632 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6633 && ( queueCount == rhs.queueCount )
6634 && ( pQueuePriorities == rhs.pQueuePriorities );
6635 }
6636
6637 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6638 {
6639 return !operator==( rhs );
6640 }
6641
6642 private:
6643 StructureType sType;
6644
6645 public:
6646 const void* pNext;
6647 DeviceQueueCreateFlags flags;
6648 uint32_t queueFamilyIndex;
6649 uint32_t queueCount;
6650 const float* pQueuePriorities;
6651 };
6652 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6653
6654 struct DeviceCreateInfo
6655 {
6656 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 )
6657 : sType( StructureType::eDeviceCreateInfo )
6658 , pNext( nullptr )
6659 , flags( flags_ )
6660 , queueCreateInfoCount( queueCreateInfoCount_ )
6661 , pQueueCreateInfos( pQueueCreateInfos_ )
6662 , enabledLayerCount( enabledLayerCount_ )
6663 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6664 , enabledExtensionCount( enabledExtensionCount_ )
6665 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6666 , pEnabledFeatures( pEnabledFeatures_ )
6667 {
6668 }
6669
6670 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6671 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006672 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006673 }
6674
6675 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6676 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006677 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006678 return *this;
6679 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006680 DeviceCreateInfo& setPNext( const void* pNext_ )
6681 {
6682 pNext = pNext_;
6683 return *this;
6684 }
6685
6686 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6687 {
6688 flags = flags_;
6689 return *this;
6690 }
6691
6692 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6693 {
6694 queueCreateInfoCount = queueCreateInfoCount_;
6695 return *this;
6696 }
6697
6698 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6699 {
6700 pQueueCreateInfos = pQueueCreateInfos_;
6701 return *this;
6702 }
6703
6704 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6705 {
6706 enabledLayerCount = enabledLayerCount_;
6707 return *this;
6708 }
6709
6710 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6711 {
6712 ppEnabledLayerNames = ppEnabledLayerNames_;
6713 return *this;
6714 }
6715
6716 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6717 {
6718 enabledExtensionCount = enabledExtensionCount_;
6719 return *this;
6720 }
6721
6722 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6723 {
6724 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6725 return *this;
6726 }
6727
6728 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6729 {
6730 pEnabledFeatures = pEnabledFeatures_;
6731 return *this;
6732 }
6733
6734 operator const VkDeviceCreateInfo&() const
6735 {
6736 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6737 }
6738
6739 bool operator==( DeviceCreateInfo const& rhs ) const
6740 {
6741 return ( sType == rhs.sType )
6742 && ( pNext == rhs.pNext )
6743 && ( flags == rhs.flags )
6744 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6745 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6746 && ( enabledLayerCount == rhs.enabledLayerCount )
6747 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6748 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6749 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6750 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6751 }
6752
6753 bool operator!=( DeviceCreateInfo const& rhs ) const
6754 {
6755 return !operator==( rhs );
6756 }
6757
6758 private:
6759 StructureType sType;
6760
6761 public:
6762 const void* pNext;
6763 DeviceCreateFlags flags;
6764 uint32_t queueCreateInfoCount;
6765 const DeviceQueueCreateInfo* pQueueCreateInfos;
6766 uint32_t enabledLayerCount;
6767 const char* const* ppEnabledLayerNames;
6768 uint32_t enabledExtensionCount;
6769 const char* const* ppEnabledExtensionNames;
6770 const PhysicalDeviceFeatures* pEnabledFeatures;
6771 };
6772 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6773
6774 struct InstanceCreateInfo
6775 {
6776 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 )
6777 : sType( StructureType::eInstanceCreateInfo )
6778 , pNext( nullptr )
6779 , flags( flags_ )
6780 , pApplicationInfo( pApplicationInfo_ )
6781 , enabledLayerCount( enabledLayerCount_ )
6782 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6783 , enabledExtensionCount( enabledExtensionCount_ )
6784 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6785 {
6786 }
6787
6788 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6789 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006790 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006791 }
6792
6793 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006795 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006796 return *this;
6797 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006798 InstanceCreateInfo& setPNext( const void* pNext_ )
6799 {
6800 pNext = pNext_;
6801 return *this;
6802 }
6803
6804 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6805 {
6806 flags = flags_;
6807 return *this;
6808 }
6809
6810 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6811 {
6812 pApplicationInfo = pApplicationInfo_;
6813 return *this;
6814 }
6815
6816 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6817 {
6818 enabledLayerCount = enabledLayerCount_;
6819 return *this;
6820 }
6821
6822 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6823 {
6824 ppEnabledLayerNames = ppEnabledLayerNames_;
6825 return *this;
6826 }
6827
6828 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6829 {
6830 enabledExtensionCount = enabledExtensionCount_;
6831 return *this;
6832 }
6833
6834 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6835 {
6836 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6837 return *this;
6838 }
6839
6840 operator const VkInstanceCreateInfo&() const
6841 {
6842 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6843 }
6844
6845 bool operator==( InstanceCreateInfo const& rhs ) const
6846 {
6847 return ( sType == rhs.sType )
6848 && ( pNext == rhs.pNext )
6849 && ( flags == rhs.flags )
6850 && ( pApplicationInfo == rhs.pApplicationInfo )
6851 && ( enabledLayerCount == rhs.enabledLayerCount )
6852 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6853 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6854 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6855 }
6856
6857 bool operator!=( InstanceCreateInfo const& rhs ) const
6858 {
6859 return !operator==( rhs );
6860 }
6861
6862 private:
6863 StructureType sType;
6864
6865 public:
6866 const void* pNext;
6867 InstanceCreateFlags flags;
6868 const ApplicationInfo* pApplicationInfo;
6869 uint32_t enabledLayerCount;
6870 const char* const* ppEnabledLayerNames;
6871 uint32_t enabledExtensionCount;
6872 const char* const* ppEnabledExtensionNames;
6873 };
6874 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6875
6876 struct MemoryAllocateInfo
6877 {
6878 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6879 : sType( StructureType::eMemoryAllocateInfo )
6880 , pNext( nullptr )
6881 , allocationSize( allocationSize_ )
6882 , memoryTypeIndex( memoryTypeIndex_ )
6883 {
6884 }
6885
6886 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6887 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006888 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006889 }
6890
6891 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6892 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006893 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006894 return *this;
6895 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006896 MemoryAllocateInfo& setPNext( const void* pNext_ )
6897 {
6898 pNext = pNext_;
6899 return *this;
6900 }
6901
6902 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6903 {
6904 allocationSize = allocationSize_;
6905 return *this;
6906 }
6907
6908 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6909 {
6910 memoryTypeIndex = memoryTypeIndex_;
6911 return *this;
6912 }
6913
6914 operator const VkMemoryAllocateInfo&() const
6915 {
6916 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6917 }
6918
6919 bool operator==( MemoryAllocateInfo const& rhs ) const
6920 {
6921 return ( sType == rhs.sType )
6922 && ( pNext == rhs.pNext )
6923 && ( allocationSize == rhs.allocationSize )
6924 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6925 }
6926
6927 bool operator!=( MemoryAllocateInfo const& rhs ) const
6928 {
6929 return !operator==( rhs );
6930 }
6931
6932 private:
6933 StructureType sType;
6934
6935 public:
6936 const void* pNext;
6937 DeviceSize allocationSize;
6938 uint32_t memoryTypeIndex;
6939 };
6940 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6941
6942 struct MappedMemoryRange
6943 {
6944 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6945 : sType( StructureType::eMappedMemoryRange )
6946 , pNext( nullptr )
6947 , memory( memory_ )
6948 , offset( offset_ )
6949 , size( size_ )
6950 {
6951 }
6952
6953 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006955 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006956 }
6957
6958 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006960 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006961 return *this;
6962 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006963 MappedMemoryRange& setPNext( const void* pNext_ )
6964 {
6965 pNext = pNext_;
6966 return *this;
6967 }
6968
6969 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6970 {
6971 memory = memory_;
6972 return *this;
6973 }
6974
6975 MappedMemoryRange& setOffset( DeviceSize offset_ )
6976 {
6977 offset = offset_;
6978 return *this;
6979 }
6980
6981 MappedMemoryRange& setSize( DeviceSize size_ )
6982 {
6983 size = size_;
6984 return *this;
6985 }
6986
6987 operator const VkMappedMemoryRange&() const
6988 {
6989 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6990 }
6991
6992 bool operator==( MappedMemoryRange const& rhs ) const
6993 {
6994 return ( sType == rhs.sType )
6995 && ( pNext == rhs.pNext )
6996 && ( memory == rhs.memory )
6997 && ( offset == rhs.offset )
6998 && ( size == rhs.size );
6999 }
7000
7001 bool operator!=( MappedMemoryRange const& rhs ) const
7002 {
7003 return !operator==( rhs );
7004 }
7005
7006 private:
7007 StructureType sType;
7008
7009 public:
7010 const void* pNext;
7011 DeviceMemory memory;
7012 DeviceSize offset;
7013 DeviceSize size;
7014 };
7015 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7016
7017 struct WriteDescriptorSet
7018 {
7019 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 )
7020 : sType( StructureType::eWriteDescriptorSet )
7021 , pNext( nullptr )
7022 , dstSet( dstSet_ )
7023 , dstBinding( dstBinding_ )
7024 , dstArrayElement( dstArrayElement_ )
7025 , descriptorCount( descriptorCount_ )
7026 , descriptorType( descriptorType_ )
7027 , pImageInfo( pImageInfo_ )
7028 , pBufferInfo( pBufferInfo_ )
7029 , pTexelBufferView( pTexelBufferView_ )
7030 {
7031 }
7032
7033 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7034 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007035 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007036 }
7037
7038 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007040 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007041 return *this;
7042 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007043 WriteDescriptorSet& setPNext( const void* pNext_ )
7044 {
7045 pNext = pNext_;
7046 return *this;
7047 }
7048
7049 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7050 {
7051 dstSet = dstSet_;
7052 return *this;
7053 }
7054
7055 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7056 {
7057 dstBinding = dstBinding_;
7058 return *this;
7059 }
7060
7061 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7062 {
7063 dstArrayElement = dstArrayElement_;
7064 return *this;
7065 }
7066
7067 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7068 {
7069 descriptorCount = descriptorCount_;
7070 return *this;
7071 }
7072
7073 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7074 {
7075 descriptorType = descriptorType_;
7076 return *this;
7077 }
7078
7079 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7080 {
7081 pImageInfo = pImageInfo_;
7082 return *this;
7083 }
7084
7085 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7086 {
7087 pBufferInfo = pBufferInfo_;
7088 return *this;
7089 }
7090
7091 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7092 {
7093 pTexelBufferView = pTexelBufferView_;
7094 return *this;
7095 }
7096
7097 operator const VkWriteDescriptorSet&() const
7098 {
7099 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7100 }
7101
7102 bool operator==( WriteDescriptorSet const& rhs ) const
7103 {
7104 return ( sType == rhs.sType )
7105 && ( pNext == rhs.pNext )
7106 && ( dstSet == rhs.dstSet )
7107 && ( dstBinding == rhs.dstBinding )
7108 && ( dstArrayElement == rhs.dstArrayElement )
7109 && ( descriptorCount == rhs.descriptorCount )
7110 && ( descriptorType == rhs.descriptorType )
7111 && ( pImageInfo == rhs.pImageInfo )
7112 && ( pBufferInfo == rhs.pBufferInfo )
7113 && ( pTexelBufferView == rhs.pTexelBufferView );
7114 }
7115
7116 bool operator!=( WriteDescriptorSet const& rhs ) const
7117 {
7118 return !operator==( rhs );
7119 }
7120
7121 private:
7122 StructureType sType;
7123
7124 public:
7125 const void* pNext;
7126 DescriptorSet dstSet;
7127 uint32_t dstBinding;
7128 uint32_t dstArrayElement;
7129 uint32_t descriptorCount;
7130 DescriptorType descriptorType;
7131 const DescriptorImageInfo* pImageInfo;
7132 const DescriptorBufferInfo* pBufferInfo;
7133 const BufferView* pTexelBufferView;
7134 };
7135 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7136
7137 struct CopyDescriptorSet
7138 {
7139 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 )
7140 : sType( StructureType::eCopyDescriptorSet )
7141 , pNext( nullptr )
7142 , srcSet( srcSet_ )
7143 , srcBinding( srcBinding_ )
7144 , srcArrayElement( srcArrayElement_ )
7145 , dstSet( dstSet_ )
7146 , dstBinding( dstBinding_ )
7147 , dstArrayElement( dstArrayElement_ )
7148 , descriptorCount( descriptorCount_ )
7149 {
7150 }
7151
7152 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7153 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007154 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007155 }
7156
7157 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7158 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007159 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007160 return *this;
7161 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007162 CopyDescriptorSet& setPNext( const void* pNext_ )
7163 {
7164 pNext = pNext_;
7165 return *this;
7166 }
7167
7168 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7169 {
7170 srcSet = srcSet_;
7171 return *this;
7172 }
7173
7174 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7175 {
7176 srcBinding = srcBinding_;
7177 return *this;
7178 }
7179
7180 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7181 {
7182 srcArrayElement = srcArrayElement_;
7183 return *this;
7184 }
7185
7186 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7187 {
7188 dstSet = dstSet_;
7189 return *this;
7190 }
7191
7192 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7193 {
7194 dstBinding = dstBinding_;
7195 return *this;
7196 }
7197
7198 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7199 {
7200 dstArrayElement = dstArrayElement_;
7201 return *this;
7202 }
7203
7204 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7205 {
7206 descriptorCount = descriptorCount_;
7207 return *this;
7208 }
7209
7210 operator const VkCopyDescriptorSet&() const
7211 {
7212 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7213 }
7214
7215 bool operator==( CopyDescriptorSet const& rhs ) const
7216 {
7217 return ( sType == rhs.sType )
7218 && ( pNext == rhs.pNext )
7219 && ( srcSet == rhs.srcSet )
7220 && ( srcBinding == rhs.srcBinding )
7221 && ( srcArrayElement == rhs.srcArrayElement )
7222 && ( dstSet == rhs.dstSet )
7223 && ( dstBinding == rhs.dstBinding )
7224 && ( dstArrayElement == rhs.dstArrayElement )
7225 && ( descriptorCount == rhs.descriptorCount );
7226 }
7227
7228 bool operator!=( CopyDescriptorSet const& rhs ) const
7229 {
7230 return !operator==( rhs );
7231 }
7232
7233 private:
7234 StructureType sType;
7235
7236 public:
7237 const void* pNext;
7238 DescriptorSet srcSet;
7239 uint32_t srcBinding;
7240 uint32_t srcArrayElement;
7241 DescriptorSet dstSet;
7242 uint32_t dstBinding;
7243 uint32_t dstArrayElement;
7244 uint32_t descriptorCount;
7245 };
7246 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7247
7248 struct BufferViewCreateInfo
7249 {
7250 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7251 : sType( StructureType::eBufferViewCreateInfo )
7252 , pNext( nullptr )
7253 , flags( flags_ )
7254 , buffer( buffer_ )
7255 , format( format_ )
7256 , offset( offset_ )
7257 , range( range_ )
7258 {
7259 }
7260
7261 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7262 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007263 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007264 }
7265
7266 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7267 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007268 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007269 return *this;
7270 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007271 BufferViewCreateInfo& setPNext( const void* pNext_ )
7272 {
7273 pNext = pNext_;
7274 return *this;
7275 }
7276
7277 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7278 {
7279 flags = flags_;
7280 return *this;
7281 }
7282
7283 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7284 {
7285 buffer = buffer_;
7286 return *this;
7287 }
7288
7289 BufferViewCreateInfo& setFormat( Format format_ )
7290 {
7291 format = format_;
7292 return *this;
7293 }
7294
7295 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7296 {
7297 offset = offset_;
7298 return *this;
7299 }
7300
7301 BufferViewCreateInfo& setRange( DeviceSize range_ )
7302 {
7303 range = range_;
7304 return *this;
7305 }
7306
7307 operator const VkBufferViewCreateInfo&() const
7308 {
7309 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7310 }
7311
7312 bool operator==( BufferViewCreateInfo const& rhs ) const
7313 {
7314 return ( sType == rhs.sType )
7315 && ( pNext == rhs.pNext )
7316 && ( flags == rhs.flags )
7317 && ( buffer == rhs.buffer )
7318 && ( format == rhs.format )
7319 && ( offset == rhs.offset )
7320 && ( range == rhs.range );
7321 }
7322
7323 bool operator!=( BufferViewCreateInfo const& rhs ) const
7324 {
7325 return !operator==( rhs );
7326 }
7327
7328 private:
7329 StructureType sType;
7330
7331 public:
7332 const void* pNext;
7333 BufferViewCreateFlags flags;
7334 Buffer buffer;
7335 Format format;
7336 DeviceSize offset;
7337 DeviceSize range;
7338 };
7339 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7340
7341 struct ShaderModuleCreateInfo
7342 {
7343 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7344 : sType( StructureType::eShaderModuleCreateInfo )
7345 , pNext( nullptr )
7346 , flags( flags_ )
7347 , codeSize( codeSize_ )
7348 , pCode( pCode_ )
7349 {
7350 }
7351
7352 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007354 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007355 }
7356
7357 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7358 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007359 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007360 return *this;
7361 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007362 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7363 {
7364 pNext = pNext_;
7365 return *this;
7366 }
7367
7368 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7369 {
7370 flags = flags_;
7371 return *this;
7372 }
7373
7374 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7375 {
7376 codeSize = codeSize_;
7377 return *this;
7378 }
7379
7380 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7381 {
7382 pCode = pCode_;
7383 return *this;
7384 }
7385
7386 operator const VkShaderModuleCreateInfo&() const
7387 {
7388 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7389 }
7390
7391 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7392 {
7393 return ( sType == rhs.sType )
7394 && ( pNext == rhs.pNext )
7395 && ( flags == rhs.flags )
7396 && ( codeSize == rhs.codeSize )
7397 && ( pCode == rhs.pCode );
7398 }
7399
7400 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7401 {
7402 return !operator==( rhs );
7403 }
7404
7405 private:
7406 StructureType sType;
7407
7408 public:
7409 const void* pNext;
7410 ShaderModuleCreateFlags flags;
7411 size_t codeSize;
7412 const uint32_t* pCode;
7413 };
7414 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7415
7416 struct DescriptorSetAllocateInfo
7417 {
7418 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7419 : sType( StructureType::eDescriptorSetAllocateInfo )
7420 , pNext( nullptr )
7421 , descriptorPool( descriptorPool_ )
7422 , descriptorSetCount( descriptorSetCount_ )
7423 , pSetLayouts( pSetLayouts_ )
7424 {
7425 }
7426
7427 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007429 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007430 }
7431
7432 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7433 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007434 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007435 return *this;
7436 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007437 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7438 {
7439 pNext = pNext_;
7440 return *this;
7441 }
7442
7443 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7444 {
7445 descriptorPool = descriptorPool_;
7446 return *this;
7447 }
7448
7449 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7450 {
7451 descriptorSetCount = descriptorSetCount_;
7452 return *this;
7453 }
7454
7455 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7456 {
7457 pSetLayouts = pSetLayouts_;
7458 return *this;
7459 }
7460
7461 operator const VkDescriptorSetAllocateInfo&() const
7462 {
7463 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7464 }
7465
7466 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7467 {
7468 return ( sType == rhs.sType )
7469 && ( pNext == rhs.pNext )
7470 && ( descriptorPool == rhs.descriptorPool )
7471 && ( descriptorSetCount == rhs.descriptorSetCount )
7472 && ( pSetLayouts == rhs.pSetLayouts );
7473 }
7474
7475 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7476 {
7477 return !operator==( rhs );
7478 }
7479
7480 private:
7481 StructureType sType;
7482
7483 public:
7484 const void* pNext;
7485 DescriptorPool descriptorPool;
7486 uint32_t descriptorSetCount;
7487 const DescriptorSetLayout* pSetLayouts;
7488 };
7489 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7490
7491 struct PipelineVertexInputStateCreateInfo
7492 {
7493 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7494 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7495 , pNext( nullptr )
7496 , flags( flags_ )
7497 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7498 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7499 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7500 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7501 {
7502 }
7503
7504 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7505 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007506 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007507 }
7508
7509 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7510 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007511 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007512 return *this;
7513 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007514 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7515 {
7516 pNext = pNext_;
7517 return *this;
7518 }
7519
7520 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7521 {
7522 flags = flags_;
7523 return *this;
7524 }
7525
7526 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7527 {
7528 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7529 return *this;
7530 }
7531
7532 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7533 {
7534 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7535 return *this;
7536 }
7537
7538 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7539 {
7540 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7541 return *this;
7542 }
7543
7544 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7545 {
7546 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7547 return *this;
7548 }
7549
7550 operator const VkPipelineVertexInputStateCreateInfo&() const
7551 {
7552 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7553 }
7554
7555 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7556 {
7557 return ( sType == rhs.sType )
7558 && ( pNext == rhs.pNext )
7559 && ( flags == rhs.flags )
7560 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7561 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7562 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7563 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7564 }
7565
7566 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7567 {
7568 return !operator==( rhs );
7569 }
7570
7571 private:
7572 StructureType sType;
7573
7574 public:
7575 const void* pNext;
7576 PipelineVertexInputStateCreateFlags flags;
7577 uint32_t vertexBindingDescriptionCount;
7578 const VertexInputBindingDescription* pVertexBindingDescriptions;
7579 uint32_t vertexAttributeDescriptionCount;
7580 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7581 };
7582 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7583
7584 struct PipelineInputAssemblyStateCreateInfo
7585 {
7586 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7587 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7588 , pNext( nullptr )
7589 , flags( flags_ )
7590 , topology( topology_ )
7591 , primitiveRestartEnable( primitiveRestartEnable_ )
7592 {
7593 }
7594
7595 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7596 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007597 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007598 }
7599
7600 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7601 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007602 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007603 return *this;
7604 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007605 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7606 {
7607 pNext = pNext_;
7608 return *this;
7609 }
7610
7611 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7612 {
7613 flags = flags_;
7614 return *this;
7615 }
7616
7617 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7618 {
7619 topology = topology_;
7620 return *this;
7621 }
7622
7623 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7624 {
7625 primitiveRestartEnable = primitiveRestartEnable_;
7626 return *this;
7627 }
7628
7629 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7630 {
7631 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7632 }
7633
7634 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7635 {
7636 return ( sType == rhs.sType )
7637 && ( pNext == rhs.pNext )
7638 && ( flags == rhs.flags )
7639 && ( topology == rhs.topology )
7640 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7641 }
7642
7643 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7644 {
7645 return !operator==( rhs );
7646 }
7647
7648 private:
7649 StructureType sType;
7650
7651 public:
7652 const void* pNext;
7653 PipelineInputAssemblyStateCreateFlags flags;
7654 PrimitiveTopology topology;
7655 Bool32 primitiveRestartEnable;
7656 };
7657 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7658
7659 struct PipelineTessellationStateCreateInfo
7660 {
7661 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7662 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7663 , pNext( nullptr )
7664 , flags( flags_ )
7665 , patchControlPoints( patchControlPoints_ )
7666 {
7667 }
7668
7669 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7670 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007671 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007672 }
7673
7674 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7675 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007676 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007677 return *this;
7678 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007679 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7680 {
7681 pNext = pNext_;
7682 return *this;
7683 }
7684
7685 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7686 {
7687 flags = flags_;
7688 return *this;
7689 }
7690
7691 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7692 {
7693 patchControlPoints = patchControlPoints_;
7694 return *this;
7695 }
7696
7697 operator const VkPipelineTessellationStateCreateInfo&() const
7698 {
7699 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7700 }
7701
7702 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7703 {
7704 return ( sType == rhs.sType )
7705 && ( pNext == rhs.pNext )
7706 && ( flags == rhs.flags )
7707 && ( patchControlPoints == rhs.patchControlPoints );
7708 }
7709
7710 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7711 {
7712 return !operator==( rhs );
7713 }
7714
7715 private:
7716 StructureType sType;
7717
7718 public:
7719 const void* pNext;
7720 PipelineTessellationStateCreateFlags flags;
7721 uint32_t patchControlPoints;
7722 };
7723 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7724
7725 struct PipelineViewportStateCreateInfo
7726 {
7727 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7728 : sType( StructureType::ePipelineViewportStateCreateInfo )
7729 , pNext( nullptr )
7730 , flags( flags_ )
7731 , viewportCount( viewportCount_ )
7732 , pViewports( pViewports_ )
7733 , scissorCount( scissorCount_ )
7734 , pScissors( pScissors_ )
7735 {
7736 }
7737
7738 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7739 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007740 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007741 }
7742
7743 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007745 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007746 return *this;
7747 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007748 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7749 {
7750 pNext = pNext_;
7751 return *this;
7752 }
7753
7754 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7755 {
7756 flags = flags_;
7757 return *this;
7758 }
7759
7760 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7761 {
7762 viewportCount = viewportCount_;
7763 return *this;
7764 }
7765
7766 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7767 {
7768 pViewports = pViewports_;
7769 return *this;
7770 }
7771
7772 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7773 {
7774 scissorCount = scissorCount_;
7775 return *this;
7776 }
7777
7778 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7779 {
7780 pScissors = pScissors_;
7781 return *this;
7782 }
7783
7784 operator const VkPipelineViewportStateCreateInfo&() const
7785 {
7786 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7787 }
7788
7789 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7790 {
7791 return ( sType == rhs.sType )
7792 && ( pNext == rhs.pNext )
7793 && ( flags == rhs.flags )
7794 && ( viewportCount == rhs.viewportCount )
7795 && ( pViewports == rhs.pViewports )
7796 && ( scissorCount == rhs.scissorCount )
7797 && ( pScissors == rhs.pScissors );
7798 }
7799
7800 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7801 {
7802 return !operator==( rhs );
7803 }
7804
7805 private:
7806 StructureType sType;
7807
7808 public:
7809 const void* pNext;
7810 PipelineViewportStateCreateFlags flags;
7811 uint32_t viewportCount;
7812 const Viewport* pViewports;
7813 uint32_t scissorCount;
7814 const Rect2D* pScissors;
7815 };
7816 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7817
7818 struct PipelineRasterizationStateCreateInfo
7819 {
7820 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 )
7821 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7822 , pNext( nullptr )
7823 , flags( flags_ )
7824 , depthClampEnable( depthClampEnable_ )
7825 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7826 , polygonMode( polygonMode_ )
7827 , cullMode( cullMode_ )
7828 , frontFace( frontFace_ )
7829 , depthBiasEnable( depthBiasEnable_ )
7830 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7831 , depthBiasClamp( depthBiasClamp_ )
7832 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7833 , lineWidth( lineWidth_ )
7834 {
7835 }
7836
7837 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007839 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007840 }
7841
7842 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007844 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007845 return *this;
7846 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007847 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7848 {
7849 pNext = pNext_;
7850 return *this;
7851 }
7852
7853 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7854 {
7855 flags = flags_;
7856 return *this;
7857 }
7858
7859 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7860 {
7861 depthClampEnable = depthClampEnable_;
7862 return *this;
7863 }
7864
7865 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7866 {
7867 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7868 return *this;
7869 }
7870
7871 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7872 {
7873 polygonMode = polygonMode_;
7874 return *this;
7875 }
7876
7877 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7878 {
7879 cullMode = cullMode_;
7880 return *this;
7881 }
7882
7883 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7884 {
7885 frontFace = frontFace_;
7886 return *this;
7887 }
7888
7889 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7890 {
7891 depthBiasEnable = depthBiasEnable_;
7892 return *this;
7893 }
7894
7895 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7896 {
7897 depthBiasConstantFactor = depthBiasConstantFactor_;
7898 return *this;
7899 }
7900
7901 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7902 {
7903 depthBiasClamp = depthBiasClamp_;
7904 return *this;
7905 }
7906
7907 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7908 {
7909 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7910 return *this;
7911 }
7912
7913 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7914 {
7915 lineWidth = lineWidth_;
7916 return *this;
7917 }
7918
7919 operator const VkPipelineRasterizationStateCreateInfo&() const
7920 {
7921 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7922 }
7923
7924 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7925 {
7926 return ( sType == rhs.sType )
7927 && ( pNext == rhs.pNext )
7928 && ( flags == rhs.flags )
7929 && ( depthClampEnable == rhs.depthClampEnable )
7930 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7931 && ( polygonMode == rhs.polygonMode )
7932 && ( cullMode == rhs.cullMode )
7933 && ( frontFace == rhs.frontFace )
7934 && ( depthBiasEnable == rhs.depthBiasEnable )
7935 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7936 && ( depthBiasClamp == rhs.depthBiasClamp )
7937 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7938 && ( lineWidth == rhs.lineWidth );
7939 }
7940
7941 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7942 {
7943 return !operator==( rhs );
7944 }
7945
7946 private:
7947 StructureType sType;
7948
7949 public:
7950 const void* pNext;
7951 PipelineRasterizationStateCreateFlags flags;
7952 Bool32 depthClampEnable;
7953 Bool32 rasterizerDiscardEnable;
7954 PolygonMode polygonMode;
7955 CullModeFlags cullMode;
7956 FrontFace frontFace;
7957 Bool32 depthBiasEnable;
7958 float depthBiasConstantFactor;
7959 float depthBiasClamp;
7960 float depthBiasSlopeFactor;
7961 float lineWidth;
7962 };
7963 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7964
7965 struct PipelineDepthStencilStateCreateInfo
7966 {
7967 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 )
7968 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7969 , pNext( nullptr )
7970 , flags( flags_ )
7971 , depthTestEnable( depthTestEnable_ )
7972 , depthWriteEnable( depthWriteEnable_ )
7973 , depthCompareOp( depthCompareOp_ )
7974 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7975 , stencilTestEnable( stencilTestEnable_ )
7976 , front( front_ )
7977 , back( back_ )
7978 , minDepthBounds( minDepthBounds_ )
7979 , maxDepthBounds( maxDepthBounds_ )
7980 {
7981 }
7982
7983 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7984 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007985 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007986 }
7987
7988 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7989 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007990 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007991 return *this;
7992 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007993 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7994 {
7995 pNext = pNext_;
7996 return *this;
7997 }
7998
7999 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8000 {
8001 flags = flags_;
8002 return *this;
8003 }
8004
8005 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8006 {
8007 depthTestEnable = depthTestEnable_;
8008 return *this;
8009 }
8010
8011 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8012 {
8013 depthWriteEnable = depthWriteEnable_;
8014 return *this;
8015 }
8016
8017 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8018 {
8019 depthCompareOp = depthCompareOp_;
8020 return *this;
8021 }
8022
8023 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8024 {
8025 depthBoundsTestEnable = depthBoundsTestEnable_;
8026 return *this;
8027 }
8028
8029 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8030 {
8031 stencilTestEnable = stencilTestEnable_;
8032 return *this;
8033 }
8034
8035 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8036 {
8037 front = front_;
8038 return *this;
8039 }
8040
8041 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8042 {
8043 back = back_;
8044 return *this;
8045 }
8046
8047 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8048 {
8049 minDepthBounds = minDepthBounds_;
8050 return *this;
8051 }
8052
8053 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8054 {
8055 maxDepthBounds = maxDepthBounds_;
8056 return *this;
8057 }
8058
8059 operator const VkPipelineDepthStencilStateCreateInfo&() const
8060 {
8061 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8062 }
8063
8064 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8065 {
8066 return ( sType == rhs.sType )
8067 && ( pNext == rhs.pNext )
8068 && ( flags == rhs.flags )
8069 && ( depthTestEnable == rhs.depthTestEnable )
8070 && ( depthWriteEnable == rhs.depthWriteEnable )
8071 && ( depthCompareOp == rhs.depthCompareOp )
8072 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8073 && ( stencilTestEnable == rhs.stencilTestEnable )
8074 && ( front == rhs.front )
8075 && ( back == rhs.back )
8076 && ( minDepthBounds == rhs.minDepthBounds )
8077 && ( maxDepthBounds == rhs.maxDepthBounds );
8078 }
8079
8080 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8081 {
8082 return !operator==( rhs );
8083 }
8084
8085 private:
8086 StructureType sType;
8087
8088 public:
8089 const void* pNext;
8090 PipelineDepthStencilStateCreateFlags flags;
8091 Bool32 depthTestEnable;
8092 Bool32 depthWriteEnable;
8093 CompareOp depthCompareOp;
8094 Bool32 depthBoundsTestEnable;
8095 Bool32 stencilTestEnable;
8096 StencilOpState front;
8097 StencilOpState back;
8098 float minDepthBounds;
8099 float maxDepthBounds;
8100 };
8101 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8102
8103 struct PipelineCacheCreateInfo
8104 {
8105 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8106 : sType( StructureType::ePipelineCacheCreateInfo )
8107 , pNext( nullptr )
8108 , flags( flags_ )
8109 , initialDataSize( initialDataSize_ )
8110 , pInitialData( pInitialData_ )
8111 {
8112 }
8113
8114 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8115 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008116 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008117 }
8118
8119 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008121 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008122 return *this;
8123 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008124 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8125 {
8126 pNext = pNext_;
8127 return *this;
8128 }
8129
8130 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8131 {
8132 flags = flags_;
8133 return *this;
8134 }
8135
8136 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8137 {
8138 initialDataSize = initialDataSize_;
8139 return *this;
8140 }
8141
8142 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8143 {
8144 pInitialData = pInitialData_;
8145 return *this;
8146 }
8147
8148 operator const VkPipelineCacheCreateInfo&() const
8149 {
8150 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8151 }
8152
8153 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8154 {
8155 return ( sType == rhs.sType )
8156 && ( pNext == rhs.pNext )
8157 && ( flags == rhs.flags )
8158 && ( initialDataSize == rhs.initialDataSize )
8159 && ( pInitialData == rhs.pInitialData );
8160 }
8161
8162 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8163 {
8164 return !operator==( rhs );
8165 }
8166
8167 private:
8168 StructureType sType;
8169
8170 public:
8171 const void* pNext;
8172 PipelineCacheCreateFlags flags;
8173 size_t initialDataSize;
8174 const void* pInitialData;
8175 };
8176 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8177
8178 struct SamplerCreateInfo
8179 {
8180 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 )
8181 : sType( StructureType::eSamplerCreateInfo )
8182 , pNext( nullptr )
8183 , flags( flags_ )
8184 , magFilter( magFilter_ )
8185 , minFilter( minFilter_ )
8186 , mipmapMode( mipmapMode_ )
8187 , addressModeU( addressModeU_ )
8188 , addressModeV( addressModeV_ )
8189 , addressModeW( addressModeW_ )
8190 , mipLodBias( mipLodBias_ )
8191 , anisotropyEnable( anisotropyEnable_ )
8192 , maxAnisotropy( maxAnisotropy_ )
8193 , compareEnable( compareEnable_ )
8194 , compareOp( compareOp_ )
8195 , minLod( minLod_ )
8196 , maxLod( maxLod_ )
8197 , borderColor( borderColor_ )
8198 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8199 {
8200 }
8201
8202 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8203 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008204 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008205 }
8206
8207 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008209 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008210 return *this;
8211 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008212 SamplerCreateInfo& setPNext( const void* pNext_ )
8213 {
8214 pNext = pNext_;
8215 return *this;
8216 }
8217
8218 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8219 {
8220 flags = flags_;
8221 return *this;
8222 }
8223
8224 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8225 {
8226 magFilter = magFilter_;
8227 return *this;
8228 }
8229
8230 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8231 {
8232 minFilter = minFilter_;
8233 return *this;
8234 }
8235
8236 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8237 {
8238 mipmapMode = mipmapMode_;
8239 return *this;
8240 }
8241
8242 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8243 {
8244 addressModeU = addressModeU_;
8245 return *this;
8246 }
8247
8248 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8249 {
8250 addressModeV = addressModeV_;
8251 return *this;
8252 }
8253
8254 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8255 {
8256 addressModeW = addressModeW_;
8257 return *this;
8258 }
8259
8260 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8261 {
8262 mipLodBias = mipLodBias_;
8263 return *this;
8264 }
8265
8266 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8267 {
8268 anisotropyEnable = anisotropyEnable_;
8269 return *this;
8270 }
8271
8272 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8273 {
8274 maxAnisotropy = maxAnisotropy_;
8275 return *this;
8276 }
8277
8278 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8279 {
8280 compareEnable = compareEnable_;
8281 return *this;
8282 }
8283
8284 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8285 {
8286 compareOp = compareOp_;
8287 return *this;
8288 }
8289
8290 SamplerCreateInfo& setMinLod( float minLod_ )
8291 {
8292 minLod = minLod_;
8293 return *this;
8294 }
8295
8296 SamplerCreateInfo& setMaxLod( float maxLod_ )
8297 {
8298 maxLod = maxLod_;
8299 return *this;
8300 }
8301
8302 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8303 {
8304 borderColor = borderColor_;
8305 return *this;
8306 }
8307
8308 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8309 {
8310 unnormalizedCoordinates = unnormalizedCoordinates_;
8311 return *this;
8312 }
8313
8314 operator const VkSamplerCreateInfo&() const
8315 {
8316 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8317 }
8318
8319 bool operator==( SamplerCreateInfo const& rhs ) const
8320 {
8321 return ( sType == rhs.sType )
8322 && ( pNext == rhs.pNext )
8323 && ( flags == rhs.flags )
8324 && ( magFilter == rhs.magFilter )
8325 && ( minFilter == rhs.minFilter )
8326 && ( mipmapMode == rhs.mipmapMode )
8327 && ( addressModeU == rhs.addressModeU )
8328 && ( addressModeV == rhs.addressModeV )
8329 && ( addressModeW == rhs.addressModeW )
8330 && ( mipLodBias == rhs.mipLodBias )
8331 && ( anisotropyEnable == rhs.anisotropyEnable )
8332 && ( maxAnisotropy == rhs.maxAnisotropy )
8333 && ( compareEnable == rhs.compareEnable )
8334 && ( compareOp == rhs.compareOp )
8335 && ( minLod == rhs.minLod )
8336 && ( maxLod == rhs.maxLod )
8337 && ( borderColor == rhs.borderColor )
8338 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8339 }
8340
8341 bool operator!=( SamplerCreateInfo const& rhs ) const
8342 {
8343 return !operator==( rhs );
8344 }
8345
8346 private:
8347 StructureType sType;
8348
8349 public:
8350 const void* pNext;
8351 SamplerCreateFlags flags;
8352 Filter magFilter;
8353 Filter minFilter;
8354 SamplerMipmapMode mipmapMode;
8355 SamplerAddressMode addressModeU;
8356 SamplerAddressMode addressModeV;
8357 SamplerAddressMode addressModeW;
8358 float mipLodBias;
8359 Bool32 anisotropyEnable;
8360 float maxAnisotropy;
8361 Bool32 compareEnable;
8362 CompareOp compareOp;
8363 float minLod;
8364 float maxLod;
8365 BorderColor borderColor;
8366 Bool32 unnormalizedCoordinates;
8367 };
8368 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8369
8370 struct CommandBufferAllocateInfo
8371 {
8372 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8373 : sType( StructureType::eCommandBufferAllocateInfo )
8374 , pNext( nullptr )
8375 , commandPool( commandPool_ )
8376 , level( level_ )
8377 , commandBufferCount( commandBufferCount_ )
8378 {
8379 }
8380
8381 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8382 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008383 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008384 }
8385
8386 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8387 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008388 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008389 return *this;
8390 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008391 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8392 {
8393 pNext = pNext_;
8394 return *this;
8395 }
8396
8397 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8398 {
8399 commandPool = commandPool_;
8400 return *this;
8401 }
8402
8403 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8404 {
8405 level = level_;
8406 return *this;
8407 }
8408
8409 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8410 {
8411 commandBufferCount = commandBufferCount_;
8412 return *this;
8413 }
8414
8415 operator const VkCommandBufferAllocateInfo&() const
8416 {
8417 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8418 }
8419
8420 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8421 {
8422 return ( sType == rhs.sType )
8423 && ( pNext == rhs.pNext )
8424 && ( commandPool == rhs.commandPool )
8425 && ( level == rhs.level )
8426 && ( commandBufferCount == rhs.commandBufferCount );
8427 }
8428
8429 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8430 {
8431 return !operator==( rhs );
8432 }
8433
8434 private:
8435 StructureType sType;
8436
8437 public:
8438 const void* pNext;
8439 CommandPool commandPool;
8440 CommandBufferLevel level;
8441 uint32_t commandBufferCount;
8442 };
8443 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8444
8445 struct RenderPassBeginInfo
8446 {
8447 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8448 : sType( StructureType::eRenderPassBeginInfo )
8449 , pNext( nullptr )
8450 , renderPass( renderPass_ )
8451 , framebuffer( framebuffer_ )
8452 , renderArea( renderArea_ )
8453 , clearValueCount( clearValueCount_ )
8454 , pClearValues( pClearValues_ )
8455 {
8456 }
8457
8458 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008460 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008461 }
8462
8463 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8464 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008465 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008466 return *this;
8467 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008468 RenderPassBeginInfo& setPNext( const void* pNext_ )
8469 {
8470 pNext = pNext_;
8471 return *this;
8472 }
8473
8474 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8475 {
8476 renderPass = renderPass_;
8477 return *this;
8478 }
8479
8480 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8481 {
8482 framebuffer = framebuffer_;
8483 return *this;
8484 }
8485
8486 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8487 {
8488 renderArea = renderArea_;
8489 return *this;
8490 }
8491
8492 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8493 {
8494 clearValueCount = clearValueCount_;
8495 return *this;
8496 }
8497
8498 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8499 {
8500 pClearValues = pClearValues_;
8501 return *this;
8502 }
8503
8504 operator const VkRenderPassBeginInfo&() const
8505 {
8506 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8507 }
8508
8509 bool operator==( RenderPassBeginInfo const& rhs ) const
8510 {
8511 return ( sType == rhs.sType )
8512 && ( pNext == rhs.pNext )
8513 && ( renderPass == rhs.renderPass )
8514 && ( framebuffer == rhs.framebuffer )
8515 && ( renderArea == rhs.renderArea )
8516 && ( clearValueCount == rhs.clearValueCount )
8517 && ( pClearValues == rhs.pClearValues );
8518 }
8519
8520 bool operator!=( RenderPassBeginInfo const& rhs ) const
8521 {
8522 return !operator==( rhs );
8523 }
8524
8525 private:
8526 StructureType sType;
8527
8528 public:
8529 const void* pNext;
8530 RenderPass renderPass;
8531 Framebuffer framebuffer;
8532 Rect2D renderArea;
8533 uint32_t clearValueCount;
8534 const ClearValue* pClearValues;
8535 };
8536 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8537
8538 struct EventCreateInfo
8539 {
8540 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8541 : sType( StructureType::eEventCreateInfo )
8542 , pNext( nullptr )
8543 , flags( flags_ )
8544 {
8545 }
8546
8547 EventCreateInfo( VkEventCreateInfo const & rhs )
8548 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008549 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008550 }
8551
8552 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8553 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008554 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008555 return *this;
8556 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008557 EventCreateInfo& setPNext( const void* pNext_ )
8558 {
8559 pNext = pNext_;
8560 return *this;
8561 }
8562
8563 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8564 {
8565 flags = flags_;
8566 return *this;
8567 }
8568
8569 operator const VkEventCreateInfo&() const
8570 {
8571 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8572 }
8573
8574 bool operator==( EventCreateInfo const& rhs ) const
8575 {
8576 return ( sType == rhs.sType )
8577 && ( pNext == rhs.pNext )
8578 && ( flags == rhs.flags );
8579 }
8580
8581 bool operator!=( EventCreateInfo const& rhs ) const
8582 {
8583 return !operator==( rhs );
8584 }
8585
8586 private:
8587 StructureType sType;
8588
8589 public:
8590 const void* pNext;
8591 EventCreateFlags flags;
8592 };
8593 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8594
8595 struct SemaphoreCreateInfo
8596 {
8597 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8598 : sType( StructureType::eSemaphoreCreateInfo )
8599 , pNext( nullptr )
8600 , flags( flags_ )
8601 {
8602 }
8603
8604 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8605 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008606 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008607 }
8608
8609 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8610 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008611 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008612 return *this;
8613 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008614 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8615 {
8616 pNext = pNext_;
8617 return *this;
8618 }
8619
8620 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8621 {
8622 flags = flags_;
8623 return *this;
8624 }
8625
8626 operator const VkSemaphoreCreateInfo&() const
8627 {
8628 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8629 }
8630
8631 bool operator==( SemaphoreCreateInfo const& rhs ) const
8632 {
8633 return ( sType == rhs.sType )
8634 && ( pNext == rhs.pNext )
8635 && ( flags == rhs.flags );
8636 }
8637
8638 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8639 {
8640 return !operator==( rhs );
8641 }
8642
8643 private:
8644 StructureType sType;
8645
8646 public:
8647 const void* pNext;
8648 SemaphoreCreateFlags flags;
8649 };
8650 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8651
8652 struct FramebufferCreateInfo
8653 {
8654 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 )
8655 : sType( StructureType::eFramebufferCreateInfo )
8656 , pNext( nullptr )
8657 , flags( flags_ )
8658 , renderPass( renderPass_ )
8659 , attachmentCount( attachmentCount_ )
8660 , pAttachments( pAttachments_ )
8661 , width( width_ )
8662 , height( height_ )
8663 , layers( layers_ )
8664 {
8665 }
8666
8667 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008669 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008670 }
8671
8672 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008674 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008675 return *this;
8676 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008677 FramebufferCreateInfo& setPNext( const void* pNext_ )
8678 {
8679 pNext = pNext_;
8680 return *this;
8681 }
8682
8683 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8684 {
8685 flags = flags_;
8686 return *this;
8687 }
8688
8689 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8690 {
8691 renderPass = renderPass_;
8692 return *this;
8693 }
8694
8695 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8696 {
8697 attachmentCount = attachmentCount_;
8698 return *this;
8699 }
8700
8701 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8702 {
8703 pAttachments = pAttachments_;
8704 return *this;
8705 }
8706
8707 FramebufferCreateInfo& setWidth( uint32_t width_ )
8708 {
8709 width = width_;
8710 return *this;
8711 }
8712
8713 FramebufferCreateInfo& setHeight( uint32_t height_ )
8714 {
8715 height = height_;
8716 return *this;
8717 }
8718
8719 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8720 {
8721 layers = layers_;
8722 return *this;
8723 }
8724
8725 operator const VkFramebufferCreateInfo&() const
8726 {
8727 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8728 }
8729
8730 bool operator==( FramebufferCreateInfo const& rhs ) const
8731 {
8732 return ( sType == rhs.sType )
8733 && ( pNext == rhs.pNext )
8734 && ( flags == rhs.flags )
8735 && ( renderPass == rhs.renderPass )
8736 && ( attachmentCount == rhs.attachmentCount )
8737 && ( pAttachments == rhs.pAttachments )
8738 && ( width == rhs.width )
8739 && ( height == rhs.height )
8740 && ( layers == rhs.layers );
8741 }
8742
8743 bool operator!=( FramebufferCreateInfo const& rhs ) const
8744 {
8745 return !operator==( rhs );
8746 }
8747
8748 private:
8749 StructureType sType;
8750
8751 public:
8752 const void* pNext;
8753 FramebufferCreateFlags flags;
8754 RenderPass renderPass;
8755 uint32_t attachmentCount;
8756 const ImageView* pAttachments;
8757 uint32_t width;
8758 uint32_t height;
8759 uint32_t layers;
8760 };
8761 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8762
8763 struct DisplayModeCreateInfoKHR
8764 {
8765 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8766 : sType( StructureType::eDisplayModeCreateInfoKHR )
8767 , pNext( nullptr )
8768 , flags( flags_ )
8769 , parameters( parameters_ )
8770 {
8771 }
8772
8773 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8774 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008775 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008776 }
8777
8778 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8779 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008780 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008781 return *this;
8782 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008783 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8784 {
8785 pNext = pNext_;
8786 return *this;
8787 }
8788
8789 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8790 {
8791 flags = flags_;
8792 return *this;
8793 }
8794
8795 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8796 {
8797 parameters = parameters_;
8798 return *this;
8799 }
8800
8801 operator const VkDisplayModeCreateInfoKHR&() const
8802 {
8803 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8804 }
8805
8806 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8807 {
8808 return ( sType == rhs.sType )
8809 && ( pNext == rhs.pNext )
8810 && ( flags == rhs.flags )
8811 && ( parameters == rhs.parameters );
8812 }
8813
8814 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8815 {
8816 return !operator==( rhs );
8817 }
8818
8819 private:
8820 StructureType sType;
8821
8822 public:
8823 const void* pNext;
8824 DisplayModeCreateFlagsKHR flags;
8825 DisplayModeParametersKHR parameters;
8826 };
8827 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8828
8829 struct DisplayPresentInfoKHR
8830 {
8831 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8832 : sType( StructureType::eDisplayPresentInfoKHR )
8833 , pNext( nullptr )
8834 , srcRect( srcRect_ )
8835 , dstRect( dstRect_ )
8836 , persistent( persistent_ )
8837 {
8838 }
8839
8840 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8841 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008842 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008843 }
8844
8845 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8846 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008847 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008848 return *this;
8849 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008850 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8851 {
8852 pNext = pNext_;
8853 return *this;
8854 }
8855
8856 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8857 {
8858 srcRect = srcRect_;
8859 return *this;
8860 }
8861
8862 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8863 {
8864 dstRect = dstRect_;
8865 return *this;
8866 }
8867
8868 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8869 {
8870 persistent = persistent_;
8871 return *this;
8872 }
8873
8874 operator const VkDisplayPresentInfoKHR&() const
8875 {
8876 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8877 }
8878
8879 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8880 {
8881 return ( sType == rhs.sType )
8882 && ( pNext == rhs.pNext )
8883 && ( srcRect == rhs.srcRect )
8884 && ( dstRect == rhs.dstRect )
8885 && ( persistent == rhs.persistent );
8886 }
8887
8888 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8889 {
8890 return !operator==( rhs );
8891 }
8892
8893 private:
8894 StructureType sType;
8895
8896 public:
8897 const void* pNext;
8898 Rect2D srcRect;
8899 Rect2D dstRect;
8900 Bool32 persistent;
8901 };
8902 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8903
8904#ifdef VK_USE_PLATFORM_ANDROID_KHR
8905 struct AndroidSurfaceCreateInfoKHR
8906 {
8907 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8908 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8909 , pNext( nullptr )
8910 , flags( flags_ )
8911 , window( window_ )
8912 {
8913 }
8914
8915 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008917 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008918 }
8919
8920 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008922 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008923 return *this;
8924 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008925 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8926 {
8927 pNext = pNext_;
8928 return *this;
8929 }
8930
8931 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8932 {
8933 flags = flags_;
8934 return *this;
8935 }
8936
8937 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8938 {
8939 window = window_;
8940 return *this;
8941 }
8942
8943 operator const VkAndroidSurfaceCreateInfoKHR&() const
8944 {
8945 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8946 }
8947
8948 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8949 {
8950 return ( sType == rhs.sType )
8951 && ( pNext == rhs.pNext )
8952 && ( flags == rhs.flags )
8953 && ( window == rhs.window );
8954 }
8955
8956 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8957 {
8958 return !operator==( rhs );
8959 }
8960
8961 private:
8962 StructureType sType;
8963
8964 public:
8965 const void* pNext;
8966 AndroidSurfaceCreateFlagsKHR flags;
8967 ANativeWindow* window;
8968 };
8969 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8970#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8971
8972#ifdef VK_USE_PLATFORM_MIR_KHR
8973 struct MirSurfaceCreateInfoKHR
8974 {
8975 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8976 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8977 , pNext( nullptr )
8978 , flags( flags_ )
8979 , connection( connection_ )
8980 , mirSurface( mirSurface_ )
8981 {
8982 }
8983
8984 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008986 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008987 }
8988
8989 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008991 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008992 return *this;
8993 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008994 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8995 {
8996 pNext = pNext_;
8997 return *this;
8998 }
8999
9000 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9001 {
9002 flags = flags_;
9003 return *this;
9004 }
9005
9006 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9007 {
9008 connection = connection_;
9009 return *this;
9010 }
9011
9012 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9013 {
9014 mirSurface = mirSurface_;
9015 return *this;
9016 }
9017
9018 operator const VkMirSurfaceCreateInfoKHR&() const
9019 {
9020 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9021 }
9022
9023 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9024 {
9025 return ( sType == rhs.sType )
9026 && ( pNext == rhs.pNext )
9027 && ( flags == rhs.flags )
9028 && ( connection == rhs.connection )
9029 && ( mirSurface == rhs.mirSurface );
9030 }
9031
9032 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9033 {
9034 return !operator==( rhs );
9035 }
9036
9037 private:
9038 StructureType sType;
9039
9040 public:
9041 const void* pNext;
9042 MirSurfaceCreateFlagsKHR flags;
9043 MirConnection* connection;
9044 MirSurface* mirSurface;
9045 };
9046 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9047#endif /*VK_USE_PLATFORM_MIR_KHR*/
9048
Mark Young39389872017-01-19 21:10:49 -07009049#ifdef VK_USE_PLATFORM_VI_NN
9050 struct ViSurfaceCreateInfoNN
9051 {
9052 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9053 : sType( StructureType::eViSurfaceCreateInfoNN )
9054 , pNext( nullptr )
9055 , flags( flags_ )
9056 , window( window_ )
9057 {
9058 }
9059
9060 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9061 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009062 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009063 }
9064
9065 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009067 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009068 return *this;
9069 }
Mark Young39389872017-01-19 21:10:49 -07009070 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9071 {
9072 pNext = pNext_;
9073 return *this;
9074 }
9075
9076 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9077 {
9078 flags = flags_;
9079 return *this;
9080 }
9081
9082 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9083 {
9084 window = window_;
9085 return *this;
9086 }
9087
9088 operator const VkViSurfaceCreateInfoNN&() const
9089 {
9090 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9091 }
9092
9093 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9094 {
9095 return ( sType == rhs.sType )
9096 && ( pNext == rhs.pNext )
9097 && ( flags == rhs.flags )
9098 && ( window == rhs.window );
9099 }
9100
9101 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9102 {
9103 return !operator==( rhs );
9104 }
9105
9106 private:
9107 StructureType sType;
9108
9109 public:
9110 const void* pNext;
9111 ViSurfaceCreateFlagsNN flags;
9112 void* window;
9113 };
9114 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9115#endif /*VK_USE_PLATFORM_VI_NN*/
9116
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009117#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9118 struct WaylandSurfaceCreateInfoKHR
9119 {
9120 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9121 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9122 , pNext( nullptr )
9123 , flags( flags_ )
9124 , display( display_ )
9125 , surface( surface_ )
9126 {
9127 }
9128
9129 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9130 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009131 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009132 }
9133
9134 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009136 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009137 return *this;
9138 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009139 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9140 {
9141 pNext = pNext_;
9142 return *this;
9143 }
9144
9145 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9146 {
9147 flags = flags_;
9148 return *this;
9149 }
9150
9151 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9152 {
9153 display = display_;
9154 return *this;
9155 }
9156
9157 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9158 {
9159 surface = surface_;
9160 return *this;
9161 }
9162
9163 operator const VkWaylandSurfaceCreateInfoKHR&() const
9164 {
9165 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9166 }
9167
9168 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9169 {
9170 return ( sType == rhs.sType )
9171 && ( pNext == rhs.pNext )
9172 && ( flags == rhs.flags )
9173 && ( display == rhs.display )
9174 && ( surface == rhs.surface );
9175 }
9176
9177 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9178 {
9179 return !operator==( rhs );
9180 }
9181
9182 private:
9183 StructureType sType;
9184
9185 public:
9186 const void* pNext;
9187 WaylandSurfaceCreateFlagsKHR flags;
9188 struct wl_display* display;
9189 struct wl_surface* surface;
9190 };
9191 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9192#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9193
9194#ifdef VK_USE_PLATFORM_WIN32_KHR
9195 struct Win32SurfaceCreateInfoKHR
9196 {
9197 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9198 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9199 , pNext( nullptr )
9200 , flags( flags_ )
9201 , hinstance( hinstance_ )
9202 , hwnd( hwnd_ )
9203 {
9204 }
9205
9206 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9207 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009208 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009209 }
9210
9211 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9212 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009213 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009214 return *this;
9215 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009216 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9217 {
9218 pNext = pNext_;
9219 return *this;
9220 }
9221
9222 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9223 {
9224 flags = flags_;
9225 return *this;
9226 }
9227
9228 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9229 {
9230 hinstance = hinstance_;
9231 return *this;
9232 }
9233
9234 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9235 {
9236 hwnd = hwnd_;
9237 return *this;
9238 }
9239
9240 operator const VkWin32SurfaceCreateInfoKHR&() const
9241 {
9242 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9243 }
9244
9245 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9246 {
9247 return ( sType == rhs.sType )
9248 && ( pNext == rhs.pNext )
9249 && ( flags == rhs.flags )
9250 && ( hinstance == rhs.hinstance )
9251 && ( hwnd == rhs.hwnd );
9252 }
9253
9254 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9255 {
9256 return !operator==( rhs );
9257 }
9258
9259 private:
9260 StructureType sType;
9261
9262 public:
9263 const void* pNext;
9264 Win32SurfaceCreateFlagsKHR flags;
9265 HINSTANCE hinstance;
9266 HWND hwnd;
9267 };
9268 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9269#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9270
9271#ifdef VK_USE_PLATFORM_XLIB_KHR
9272 struct XlibSurfaceCreateInfoKHR
9273 {
9274 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9275 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9276 , pNext( nullptr )
9277 , flags( flags_ )
9278 , dpy( dpy_ )
9279 , window( window_ )
9280 {
9281 }
9282
9283 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9284 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009285 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009286 }
9287
9288 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9289 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009290 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009291 return *this;
9292 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009293 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9294 {
9295 pNext = pNext_;
9296 return *this;
9297 }
9298
9299 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9300 {
9301 flags = flags_;
9302 return *this;
9303 }
9304
9305 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9306 {
9307 dpy = dpy_;
9308 return *this;
9309 }
9310
9311 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9312 {
9313 window = window_;
9314 return *this;
9315 }
9316
9317 operator const VkXlibSurfaceCreateInfoKHR&() const
9318 {
9319 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9320 }
9321
9322 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9323 {
9324 return ( sType == rhs.sType )
9325 && ( pNext == rhs.pNext )
9326 && ( flags == rhs.flags )
9327 && ( dpy == rhs.dpy )
9328 && ( window == rhs.window );
9329 }
9330
9331 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9332 {
9333 return !operator==( rhs );
9334 }
9335
9336 private:
9337 StructureType sType;
9338
9339 public:
9340 const void* pNext;
9341 XlibSurfaceCreateFlagsKHR flags;
9342 Display* dpy;
9343 Window window;
9344 };
9345 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9346#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9347
9348#ifdef VK_USE_PLATFORM_XCB_KHR
9349 struct XcbSurfaceCreateInfoKHR
9350 {
9351 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9352 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9353 , pNext( nullptr )
9354 , flags( flags_ )
9355 , connection( connection_ )
9356 , window( window_ )
9357 {
9358 }
9359
9360 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9361 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009362 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009363 }
9364
9365 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9366 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009367 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009368 return *this;
9369 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009370 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9371 {
9372 pNext = pNext_;
9373 return *this;
9374 }
9375
9376 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9377 {
9378 flags = flags_;
9379 return *this;
9380 }
9381
9382 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9383 {
9384 connection = connection_;
9385 return *this;
9386 }
9387
9388 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9389 {
9390 window = window_;
9391 return *this;
9392 }
9393
9394 operator const VkXcbSurfaceCreateInfoKHR&() const
9395 {
9396 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9397 }
9398
9399 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9400 {
9401 return ( sType == rhs.sType )
9402 && ( pNext == rhs.pNext )
9403 && ( flags == rhs.flags )
9404 && ( connection == rhs.connection )
9405 && ( window == rhs.window );
9406 }
9407
9408 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9409 {
9410 return !operator==( rhs );
9411 }
9412
9413 private:
9414 StructureType sType;
9415
9416 public:
9417 const void* pNext;
9418 XcbSurfaceCreateFlagsKHR flags;
9419 xcb_connection_t* connection;
9420 xcb_window_t window;
9421 };
9422 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9423#endif /*VK_USE_PLATFORM_XCB_KHR*/
9424
9425 struct DebugMarkerMarkerInfoEXT
9426 {
9427 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9428 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9429 , pNext( nullptr )
9430 , pMarkerName( pMarkerName_ )
9431 {
9432 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9433 }
9434
9435 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9436 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009437 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009438 }
9439
9440 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9441 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009442 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009443 return *this;
9444 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009445 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9446 {
9447 pNext = pNext_;
9448 return *this;
9449 }
9450
9451 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9452 {
9453 pMarkerName = pMarkerName_;
9454 return *this;
9455 }
9456
9457 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9458 {
9459 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9460 return *this;
9461 }
9462
9463 operator const VkDebugMarkerMarkerInfoEXT&() const
9464 {
9465 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9466 }
9467
9468 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9469 {
9470 return ( sType == rhs.sType )
9471 && ( pNext == rhs.pNext )
9472 && ( pMarkerName == rhs.pMarkerName )
9473 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9474 }
9475
9476 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9477 {
9478 return !operator==( rhs );
9479 }
9480
9481 private:
9482 StructureType sType;
9483
9484 public:
9485 const void* pNext;
9486 const char* pMarkerName;
9487 float color[4];
9488 };
9489 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9490
9491 struct DedicatedAllocationImageCreateInfoNV
9492 {
9493 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9494 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9495 , pNext( nullptr )
9496 , dedicatedAllocation( dedicatedAllocation_ )
9497 {
9498 }
9499
9500 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009502 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009503 }
9504
9505 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9506 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009507 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009508 return *this;
9509 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009510 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9511 {
9512 pNext = pNext_;
9513 return *this;
9514 }
9515
9516 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9517 {
9518 dedicatedAllocation = dedicatedAllocation_;
9519 return *this;
9520 }
9521
9522 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9523 {
9524 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9525 }
9526
9527 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9528 {
9529 return ( sType == rhs.sType )
9530 && ( pNext == rhs.pNext )
9531 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9532 }
9533
9534 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9535 {
9536 return !operator==( rhs );
9537 }
9538
9539 private:
9540 StructureType sType;
9541
9542 public:
9543 const void* pNext;
9544 Bool32 dedicatedAllocation;
9545 };
9546 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9547
9548 struct DedicatedAllocationBufferCreateInfoNV
9549 {
9550 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9551 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9552 , pNext( nullptr )
9553 , dedicatedAllocation( dedicatedAllocation_ )
9554 {
9555 }
9556
9557 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9558 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009559 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009560 }
9561
9562 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9563 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009564 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009565 return *this;
9566 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009567 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9568 {
9569 pNext = pNext_;
9570 return *this;
9571 }
9572
9573 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9574 {
9575 dedicatedAllocation = dedicatedAllocation_;
9576 return *this;
9577 }
9578
9579 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9580 {
9581 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9582 }
9583
9584 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9585 {
9586 return ( sType == rhs.sType )
9587 && ( pNext == rhs.pNext )
9588 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9589 }
9590
9591 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9592 {
9593 return !operator==( rhs );
9594 }
9595
9596 private:
9597 StructureType sType;
9598
9599 public:
9600 const void* pNext;
9601 Bool32 dedicatedAllocation;
9602 };
9603 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9604
9605 struct DedicatedAllocationMemoryAllocateInfoNV
9606 {
9607 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9608 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9609 , pNext( nullptr )
9610 , image( image_ )
9611 , buffer( buffer_ )
9612 {
9613 }
9614
9615 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9616 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009617 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009618 }
9619
9620 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9621 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009622 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009623 return *this;
9624 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009625 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9626 {
9627 pNext = pNext_;
9628 return *this;
9629 }
9630
9631 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9632 {
9633 image = image_;
9634 return *this;
9635 }
9636
9637 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9638 {
9639 buffer = buffer_;
9640 return *this;
9641 }
9642
9643 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9644 {
9645 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9646 }
9647
9648 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9649 {
9650 return ( sType == rhs.sType )
9651 && ( pNext == rhs.pNext )
9652 && ( image == rhs.image )
9653 && ( buffer == rhs.buffer );
9654 }
9655
9656 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9657 {
9658 return !operator==( rhs );
9659 }
9660
9661 private:
9662 StructureType sType;
9663
9664 public:
9665 const void* pNext;
9666 Image image;
9667 Buffer buffer;
9668 };
9669 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9670
Lenny Komow6501c122016-08-31 15:03:49 -06009671#ifdef VK_USE_PLATFORM_WIN32_KHR
9672 struct ExportMemoryWin32HandleInfoNV
9673 {
9674 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9675 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9676 , pNext( nullptr )
9677 , pAttributes( pAttributes_ )
9678 , dwAccess( dwAccess_ )
9679 {
9680 }
9681
9682 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9683 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009684 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009685 }
9686
9687 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9688 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009689 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009690 return *this;
9691 }
Lenny Komow6501c122016-08-31 15:03:49 -06009692 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9693 {
9694 pNext = pNext_;
9695 return *this;
9696 }
9697
9698 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9699 {
9700 pAttributes = pAttributes_;
9701 return *this;
9702 }
9703
9704 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9705 {
9706 dwAccess = dwAccess_;
9707 return *this;
9708 }
9709
9710 operator const VkExportMemoryWin32HandleInfoNV&() const
9711 {
9712 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9713 }
9714
9715 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9716 {
9717 return ( sType == rhs.sType )
9718 && ( pNext == rhs.pNext )
9719 && ( pAttributes == rhs.pAttributes )
9720 && ( dwAccess == rhs.dwAccess );
9721 }
9722
9723 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9724 {
9725 return !operator==( rhs );
9726 }
9727
9728 private:
9729 StructureType sType;
9730
9731 public:
9732 const void* pNext;
9733 const SECURITY_ATTRIBUTES* pAttributes;
9734 DWORD dwAccess;
9735 };
9736 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9737#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9738
9739#ifdef VK_USE_PLATFORM_WIN32_KHR
9740 struct Win32KeyedMutexAcquireReleaseInfoNV
9741 {
9742 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 )
9743 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9744 , pNext( nullptr )
9745 , acquireCount( acquireCount_ )
9746 , pAcquireSyncs( pAcquireSyncs_ )
9747 , pAcquireKeys( pAcquireKeys_ )
9748 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9749 , releaseCount( releaseCount_ )
9750 , pReleaseSyncs( pReleaseSyncs_ )
9751 , pReleaseKeys( pReleaseKeys_ )
9752 {
9753 }
9754
9755 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9756 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009757 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009758 }
9759
9760 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9761 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009762 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009763 return *this;
9764 }
Lenny Komow6501c122016-08-31 15:03:49 -06009765 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9766 {
9767 pNext = pNext_;
9768 return *this;
9769 }
9770
9771 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9772 {
9773 acquireCount = acquireCount_;
9774 return *this;
9775 }
9776
9777 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9778 {
9779 pAcquireSyncs = pAcquireSyncs_;
9780 return *this;
9781 }
9782
9783 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9784 {
9785 pAcquireKeys = pAcquireKeys_;
9786 return *this;
9787 }
9788
9789 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9790 {
9791 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9792 return *this;
9793 }
9794
9795 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9796 {
9797 releaseCount = releaseCount_;
9798 return *this;
9799 }
9800
9801 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9802 {
9803 pReleaseSyncs = pReleaseSyncs_;
9804 return *this;
9805 }
9806
9807 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9808 {
9809 pReleaseKeys = pReleaseKeys_;
9810 return *this;
9811 }
9812
9813 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9814 {
9815 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9816 }
9817
9818 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9819 {
9820 return ( sType == rhs.sType )
9821 && ( pNext == rhs.pNext )
9822 && ( acquireCount == rhs.acquireCount )
9823 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9824 && ( pAcquireKeys == rhs.pAcquireKeys )
9825 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9826 && ( releaseCount == rhs.releaseCount )
9827 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9828 && ( pReleaseKeys == rhs.pReleaseKeys );
9829 }
9830
9831 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9832 {
9833 return !operator==( rhs );
9834 }
9835
9836 private:
9837 StructureType sType;
9838
9839 public:
9840 const void* pNext;
9841 uint32_t acquireCount;
9842 const DeviceMemory* pAcquireSyncs;
9843 const uint64_t* pAcquireKeys;
9844 const uint32_t* pAcquireTimeoutMilliseconds;
9845 uint32_t releaseCount;
9846 const DeviceMemory* pReleaseSyncs;
9847 const uint64_t* pReleaseKeys;
9848 };
9849 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9850#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9851
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009852 struct DeviceGeneratedCommandsFeaturesNVX
9853 {
9854 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9855 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9856 , pNext( nullptr )
9857 , computeBindingPointSupport( computeBindingPointSupport_ )
9858 {
9859 }
9860
9861 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9862 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009863 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009864 }
9865
9866 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9867 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009868 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009869 return *this;
9870 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009871 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9872 {
9873 pNext = pNext_;
9874 return *this;
9875 }
9876
9877 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9878 {
9879 computeBindingPointSupport = computeBindingPointSupport_;
9880 return *this;
9881 }
9882
9883 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9884 {
9885 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9886 }
9887
9888 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9889 {
9890 return ( sType == rhs.sType )
9891 && ( pNext == rhs.pNext )
9892 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9893 }
9894
9895 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9896 {
9897 return !operator==( rhs );
9898 }
9899
9900 private:
9901 StructureType sType;
9902
9903 public:
9904 const void* pNext;
9905 Bool32 computeBindingPointSupport;
9906 };
9907 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9908
9909 struct DeviceGeneratedCommandsLimitsNVX
9910 {
9911 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9912 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9913 , pNext( nullptr )
9914 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9915 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9916 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9917 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9918 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9919 {
9920 }
9921
9922 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9923 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009924 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009925 }
9926
9927 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9928 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009929 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009930 return *this;
9931 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009932 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9933 {
9934 pNext = pNext_;
9935 return *this;
9936 }
9937
9938 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9939 {
9940 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9941 return *this;
9942 }
9943
9944 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9945 {
9946 maxObjectEntryCounts = maxObjectEntryCounts_;
9947 return *this;
9948 }
9949
9950 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9951 {
9952 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9953 return *this;
9954 }
9955
9956 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9957 {
9958 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9959 return *this;
9960 }
9961
9962 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9963 {
9964 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9965 return *this;
9966 }
9967
9968 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9969 {
9970 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9971 }
9972
9973 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9974 {
9975 return ( sType == rhs.sType )
9976 && ( pNext == rhs.pNext )
9977 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9978 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9979 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9980 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9981 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9982 }
9983
9984 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9985 {
9986 return !operator==( rhs );
9987 }
9988
9989 private:
9990 StructureType sType;
9991
9992 public:
9993 const void* pNext;
9994 uint32_t maxIndirectCommandsLayoutTokenCount;
9995 uint32_t maxObjectEntryCounts;
9996 uint32_t minSequenceCountBufferOffsetAlignment;
9997 uint32_t minSequenceIndexBufferOffsetAlignment;
9998 uint32_t minCommandsTokenBufferOffsetAlignment;
9999 };
10000 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10001
10002 struct CmdReserveSpaceForCommandsInfoNVX
10003 {
10004 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10005 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10006 , pNext( nullptr )
10007 , objectTable( objectTable_ )
10008 , indirectCommandsLayout( indirectCommandsLayout_ )
10009 , maxSequencesCount( maxSequencesCount_ )
10010 {
10011 }
10012
10013 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10014 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010015 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010016 }
10017
10018 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10019 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010020 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010021 return *this;
10022 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010023 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10024 {
10025 pNext = pNext_;
10026 return *this;
10027 }
10028
10029 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10030 {
10031 objectTable = objectTable_;
10032 return *this;
10033 }
10034
10035 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10036 {
10037 indirectCommandsLayout = indirectCommandsLayout_;
10038 return *this;
10039 }
10040
10041 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10042 {
10043 maxSequencesCount = maxSequencesCount_;
10044 return *this;
10045 }
10046
10047 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10048 {
10049 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10050 }
10051
10052 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10053 {
10054 return ( sType == rhs.sType )
10055 && ( pNext == rhs.pNext )
10056 && ( objectTable == rhs.objectTable )
10057 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10058 && ( maxSequencesCount == rhs.maxSequencesCount );
10059 }
10060
10061 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10062 {
10063 return !operator==( rhs );
10064 }
10065
10066 private:
10067 StructureType sType;
10068
10069 public:
10070 const void* pNext;
10071 ObjectTableNVX objectTable;
10072 IndirectCommandsLayoutNVX indirectCommandsLayout;
10073 uint32_t maxSequencesCount;
10074 };
10075 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10076
Mark Young39389872017-01-19 21:10:49 -070010077 struct PhysicalDeviceFeatures2KHR
10078 {
10079 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10080 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10081 , pNext( nullptr )
10082 , features( features_ )
10083 {
10084 }
10085
10086 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10087 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010088 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010089 }
10090
10091 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10092 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010093 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010094 return *this;
10095 }
Mark Young39389872017-01-19 21:10:49 -070010096 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10097 {
10098 pNext = pNext_;
10099 return *this;
10100 }
10101
10102 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10103 {
10104 features = features_;
10105 return *this;
10106 }
10107
10108 operator const VkPhysicalDeviceFeatures2KHR&() const
10109 {
10110 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10111 }
10112
10113 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10114 {
10115 return ( sType == rhs.sType )
10116 && ( pNext == rhs.pNext )
10117 && ( features == rhs.features );
10118 }
10119
10120 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10121 {
10122 return !operator==( rhs );
10123 }
10124
10125 private:
10126 StructureType sType;
10127
10128 public:
10129 void* pNext;
10130 PhysicalDeviceFeatures features;
10131 };
10132 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10133
Mark Young0f183a82017-02-28 09:58:04 -070010134 struct PhysicalDevicePushDescriptorPropertiesKHR
10135 {
10136 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10137 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10138 , pNext( nullptr )
10139 , maxPushDescriptors( maxPushDescriptors_ )
10140 {
10141 }
10142
10143 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10144 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010145 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010146 }
10147
10148 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10149 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010150 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010151 return *this;
10152 }
Mark Young0f183a82017-02-28 09:58:04 -070010153 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10154 {
10155 pNext = pNext_;
10156 return *this;
10157 }
10158
10159 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10160 {
10161 maxPushDescriptors = maxPushDescriptors_;
10162 return *this;
10163 }
10164
10165 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10166 {
10167 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10168 }
10169
10170 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10171 {
10172 return ( sType == rhs.sType )
10173 && ( pNext == rhs.pNext )
10174 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10175 }
10176
10177 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10178 {
10179 return !operator==( rhs );
10180 }
10181
10182 private:
10183 StructureType sType;
10184
10185 public:
10186 void* pNext;
10187 uint32_t maxPushDescriptors;
10188 };
10189 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10190
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010191 struct PresentRegionsKHR
10192 {
10193 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10194 : sType( StructureType::ePresentRegionsKHR )
10195 , pNext( nullptr )
10196 , swapchainCount( swapchainCount_ )
10197 , pRegions( pRegions_ )
10198 {
10199 }
10200
10201 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10202 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010203 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010204 }
10205
10206 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10207 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010208 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010209 return *this;
10210 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010211 PresentRegionsKHR& setPNext( const void* pNext_ )
10212 {
10213 pNext = pNext_;
10214 return *this;
10215 }
10216
10217 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10218 {
10219 swapchainCount = swapchainCount_;
10220 return *this;
10221 }
10222
10223 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10224 {
10225 pRegions = pRegions_;
10226 return *this;
10227 }
10228
10229 operator const VkPresentRegionsKHR&() const
10230 {
10231 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10232 }
10233
10234 bool operator==( PresentRegionsKHR const& rhs ) const
10235 {
10236 return ( sType == rhs.sType )
10237 && ( pNext == rhs.pNext )
10238 && ( swapchainCount == rhs.swapchainCount )
10239 && ( pRegions == rhs.pRegions );
10240 }
10241
10242 bool operator!=( PresentRegionsKHR const& rhs ) const
10243 {
10244 return !operator==( rhs );
10245 }
10246
10247 private:
10248 StructureType sType;
10249
10250 public:
10251 const void* pNext;
10252 uint32_t swapchainCount;
10253 const PresentRegionKHR* pRegions;
10254 };
10255 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10256
Mark Young0f183a82017-02-28 09:58:04 -070010257 struct PhysicalDeviceIDPropertiesKHX
10258 {
10259 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10260 {
10261 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10262 }
10263
10264 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10265 {
10266 return ( sType == rhs.sType )
10267 && ( pNext == rhs.pNext )
10268 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10269 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10270 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10271 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10272 }
10273
10274 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10275 {
10276 return !operator==( rhs );
10277 }
10278
10279 private:
10280 StructureType sType;
10281
10282 public:
10283 void* pNext;
10284 uint8_t deviceUUID[VK_UUID_SIZE];
10285 uint8_t driverUUID[VK_UUID_SIZE];
10286 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10287 Bool32 deviceLUIDValid;
10288 };
10289 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10290
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010291#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010292 struct ExportMemoryWin32HandleInfoKHX
10293 {
10294 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10295 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10296 , pNext( nullptr )
10297 , pAttributes( pAttributes_ )
10298 , dwAccess( dwAccess_ )
10299 , name( name_ )
10300 {
10301 }
10302
10303 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10304 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010305 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010306 }
10307
10308 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10309 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010310 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010311 return *this;
10312 }
Mark Young0f183a82017-02-28 09:58:04 -070010313 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10314 {
10315 pNext = pNext_;
10316 return *this;
10317 }
10318
10319 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10320 {
10321 pAttributes = pAttributes_;
10322 return *this;
10323 }
10324
10325 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10326 {
10327 dwAccess = dwAccess_;
10328 return *this;
10329 }
10330
10331 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10332 {
10333 name = name_;
10334 return *this;
10335 }
10336
10337 operator const VkExportMemoryWin32HandleInfoKHX&() const
10338 {
10339 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10340 }
10341
10342 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10343 {
10344 return ( sType == rhs.sType )
10345 && ( pNext == rhs.pNext )
10346 && ( pAttributes == rhs.pAttributes )
10347 && ( dwAccess == rhs.dwAccess )
10348 && ( name == rhs.name );
10349 }
10350
10351 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10352 {
10353 return !operator==( rhs );
10354 }
10355
10356 private:
10357 StructureType sType;
10358
10359 public:
10360 const void* pNext;
10361 const SECURITY_ATTRIBUTES* pAttributes;
10362 DWORD dwAccess;
10363 LPCWSTR name;
10364 };
10365 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010366#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010367
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010368#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010369 struct MemoryWin32HandlePropertiesKHX
10370 {
10371 operator const VkMemoryWin32HandlePropertiesKHX&() const
10372 {
10373 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10374 }
10375
10376 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10377 {
10378 return ( sType == rhs.sType )
10379 && ( pNext == rhs.pNext )
10380 && ( memoryTypeBits == rhs.memoryTypeBits );
10381 }
10382
10383 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10384 {
10385 return !operator==( rhs );
10386 }
10387
10388 private:
10389 StructureType sType;
10390
10391 public:
10392 void* pNext;
10393 uint32_t memoryTypeBits;
10394 };
10395 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010396#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010397
10398 struct MemoryFdPropertiesKHX
10399 {
10400 operator const VkMemoryFdPropertiesKHX&() const
10401 {
10402 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10403 }
10404
10405 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10406 {
10407 return ( sType == rhs.sType )
10408 && ( pNext == rhs.pNext )
10409 && ( memoryTypeBits == rhs.memoryTypeBits );
10410 }
10411
10412 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10413 {
10414 return !operator==( rhs );
10415 }
10416
10417 private:
10418 StructureType sType;
10419
10420 public:
10421 void* pNext;
10422 uint32_t memoryTypeBits;
10423 };
10424 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10425
10426#ifdef VK_USE_PLATFORM_WIN32_KHR
10427 struct Win32KeyedMutexAcquireReleaseInfoKHX
10428 {
10429 Win32KeyedMutexAcquireReleaseInfoKHX( 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 )
10430 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10431 , pNext( nullptr )
10432 , acquireCount( acquireCount_ )
10433 , pAcquireSyncs( pAcquireSyncs_ )
10434 , pAcquireKeys( pAcquireKeys_ )
10435 , pAcquireTimeouts( pAcquireTimeouts_ )
10436 , releaseCount( releaseCount_ )
10437 , pReleaseSyncs( pReleaseSyncs_ )
10438 , pReleaseKeys( pReleaseKeys_ )
10439 {
10440 }
10441
10442 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10443 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010444 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010445 }
10446
10447 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10448 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010449 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010450 return *this;
10451 }
Mark Young0f183a82017-02-28 09:58:04 -070010452 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10453 {
10454 pNext = pNext_;
10455 return *this;
10456 }
10457
10458 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10459 {
10460 acquireCount = acquireCount_;
10461 return *this;
10462 }
10463
10464 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10465 {
10466 pAcquireSyncs = pAcquireSyncs_;
10467 return *this;
10468 }
10469
10470 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10471 {
10472 pAcquireKeys = pAcquireKeys_;
10473 return *this;
10474 }
10475
10476 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10477 {
10478 pAcquireTimeouts = pAcquireTimeouts_;
10479 return *this;
10480 }
10481
10482 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10483 {
10484 releaseCount = releaseCount_;
10485 return *this;
10486 }
10487
10488 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10489 {
10490 pReleaseSyncs = pReleaseSyncs_;
10491 return *this;
10492 }
10493
10494 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10495 {
10496 pReleaseKeys = pReleaseKeys_;
10497 return *this;
10498 }
10499
10500 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10501 {
10502 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10503 }
10504
10505 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10506 {
10507 return ( sType == rhs.sType )
10508 && ( pNext == rhs.pNext )
10509 && ( acquireCount == rhs.acquireCount )
10510 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10511 && ( pAcquireKeys == rhs.pAcquireKeys )
10512 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10513 && ( releaseCount == rhs.releaseCount )
10514 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10515 && ( pReleaseKeys == rhs.pReleaseKeys );
10516 }
10517
10518 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10519 {
10520 return !operator==( rhs );
10521 }
10522
10523 private:
10524 StructureType sType;
10525
10526 public:
10527 const void* pNext;
10528 uint32_t acquireCount;
10529 const DeviceMemory* pAcquireSyncs;
10530 const uint64_t* pAcquireKeys;
10531 const uint32_t* pAcquireTimeouts;
10532 uint32_t releaseCount;
10533 const DeviceMemory* pReleaseSyncs;
10534 const uint64_t* pReleaseKeys;
10535 };
10536 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10537#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10538
10539#ifdef VK_USE_PLATFORM_WIN32_KHX
10540 struct ExportSemaphoreWin32HandleInfoKHX
10541 {
10542 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10543 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10544 , pNext( nullptr )
10545 , pAttributes( pAttributes_ )
10546 , dwAccess( dwAccess_ )
10547 , name( name_ )
10548 {
10549 }
10550
10551 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10552 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010553 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010554 }
10555
10556 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10557 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010558 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010559 return *this;
10560 }
Mark Young0f183a82017-02-28 09:58:04 -070010561 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10562 {
10563 pNext = pNext_;
10564 return *this;
10565 }
10566
10567 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10568 {
10569 pAttributes = pAttributes_;
10570 return *this;
10571 }
10572
10573 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10574 {
10575 dwAccess = dwAccess_;
10576 return *this;
10577 }
10578
10579 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10580 {
10581 name = name_;
10582 return *this;
10583 }
10584
10585 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10586 {
10587 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10588 }
10589
10590 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10591 {
10592 return ( sType == rhs.sType )
10593 && ( pNext == rhs.pNext )
10594 && ( pAttributes == rhs.pAttributes )
10595 && ( dwAccess == rhs.dwAccess )
10596 && ( name == rhs.name );
10597 }
10598
10599 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10600 {
10601 return !operator==( rhs );
10602 }
10603
10604 private:
10605 StructureType sType;
10606
10607 public:
10608 const void* pNext;
10609 const SECURITY_ATTRIBUTES* pAttributes;
10610 DWORD dwAccess;
10611 LPCWSTR name;
10612 };
10613 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10614#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10615
10616#ifdef VK_USE_PLATFORM_WIN32_KHX
10617 struct D3D12FenceSubmitInfoKHX
10618 {
10619 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10620 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10621 , pNext( nullptr )
10622 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10623 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10624 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10625 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10626 {
10627 }
10628
10629 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10630 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010631 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010632 }
10633
10634 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10635 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010636 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010637 return *this;
10638 }
Mark Young0f183a82017-02-28 09:58:04 -070010639 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10640 {
10641 pNext = pNext_;
10642 return *this;
10643 }
10644
10645 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10646 {
10647 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10648 return *this;
10649 }
10650
10651 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10652 {
10653 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10654 return *this;
10655 }
10656
10657 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10658 {
10659 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10660 return *this;
10661 }
10662
10663 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10664 {
10665 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10666 return *this;
10667 }
10668
10669 operator const VkD3D12FenceSubmitInfoKHX&() const
10670 {
10671 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10672 }
10673
10674 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10675 {
10676 return ( sType == rhs.sType )
10677 && ( pNext == rhs.pNext )
10678 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10679 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10680 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10681 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10682 }
10683
10684 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10685 {
10686 return !operator==( rhs );
10687 }
10688
10689 private:
10690 StructureType sType;
10691
10692 public:
10693 const void* pNext;
10694 uint32_t waitSemaphoreValuesCount;
10695 const uint64_t* pWaitSemaphoreValues;
10696 uint32_t signalSemaphoreValuesCount;
10697 const uint64_t* pSignalSemaphoreValues;
10698 };
10699 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10700#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10701
10702 struct PhysicalDeviceMultiviewFeaturesKHX
10703 {
10704 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10705 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10706 , pNext( nullptr )
10707 , multiview( multiview_ )
10708 , multiviewGeometryShader( multiviewGeometryShader_ )
10709 , multiviewTessellationShader( multiviewTessellationShader_ )
10710 {
10711 }
10712
10713 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10714 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010715 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010716 }
10717
10718 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10719 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010720 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010721 return *this;
10722 }
Mark Young0f183a82017-02-28 09:58:04 -070010723 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10724 {
10725 pNext = pNext_;
10726 return *this;
10727 }
10728
10729 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10730 {
10731 multiview = multiview_;
10732 return *this;
10733 }
10734
10735 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10736 {
10737 multiviewGeometryShader = multiviewGeometryShader_;
10738 return *this;
10739 }
10740
10741 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10742 {
10743 multiviewTessellationShader = multiviewTessellationShader_;
10744 return *this;
10745 }
10746
10747 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10748 {
10749 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10750 }
10751
10752 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10753 {
10754 return ( sType == rhs.sType )
10755 && ( pNext == rhs.pNext )
10756 && ( multiview == rhs.multiview )
10757 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10758 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10759 }
10760
10761 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10762 {
10763 return !operator==( rhs );
10764 }
10765
10766 private:
10767 StructureType sType;
10768
10769 public:
10770 void* pNext;
10771 Bool32 multiview;
10772 Bool32 multiviewGeometryShader;
10773 Bool32 multiviewTessellationShader;
10774 };
10775 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10776
10777 struct PhysicalDeviceMultiviewPropertiesKHX
10778 {
10779 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10780 {
10781 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10782 }
10783
10784 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10785 {
10786 return ( sType == rhs.sType )
10787 && ( pNext == rhs.pNext )
10788 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10789 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10790 }
10791
10792 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10793 {
10794 return !operator==( rhs );
10795 }
10796
10797 private:
10798 StructureType sType;
10799
10800 public:
10801 void* pNext;
10802 uint32_t maxMultiviewViewCount;
10803 uint32_t maxMultiviewInstanceIndex;
10804 };
10805 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10806
10807 struct RenderPassMultiviewCreateInfoKHX
10808 {
10809 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 )
10810 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10811 , pNext( nullptr )
10812 , subpassCount( subpassCount_ )
10813 , pViewMasks( pViewMasks_ )
10814 , dependencyCount( dependencyCount_ )
10815 , pViewOffsets( pViewOffsets_ )
10816 , correlationMaskCount( correlationMaskCount_ )
10817 , pCorrelationMasks( pCorrelationMasks_ )
10818 {
10819 }
10820
10821 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10822 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010823 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010824 }
10825
10826 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10827 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010828 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010829 return *this;
10830 }
Mark Young0f183a82017-02-28 09:58:04 -070010831 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10832 {
10833 pNext = pNext_;
10834 return *this;
10835 }
10836
10837 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10838 {
10839 subpassCount = subpassCount_;
10840 return *this;
10841 }
10842
10843 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10844 {
10845 pViewMasks = pViewMasks_;
10846 return *this;
10847 }
10848
10849 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10850 {
10851 dependencyCount = dependencyCount_;
10852 return *this;
10853 }
10854
10855 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10856 {
10857 pViewOffsets = pViewOffsets_;
10858 return *this;
10859 }
10860
10861 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10862 {
10863 correlationMaskCount = correlationMaskCount_;
10864 return *this;
10865 }
10866
10867 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10868 {
10869 pCorrelationMasks = pCorrelationMasks_;
10870 return *this;
10871 }
10872
10873 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10874 {
10875 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10876 }
10877
10878 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10879 {
10880 return ( sType == rhs.sType )
10881 && ( pNext == rhs.pNext )
10882 && ( subpassCount == rhs.subpassCount )
10883 && ( pViewMasks == rhs.pViewMasks )
10884 && ( dependencyCount == rhs.dependencyCount )
10885 && ( pViewOffsets == rhs.pViewOffsets )
10886 && ( correlationMaskCount == rhs.correlationMaskCount )
10887 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10888 }
10889
10890 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10891 {
10892 return !operator==( rhs );
10893 }
10894
10895 private:
10896 StructureType sType;
10897
10898 public:
10899 const void* pNext;
10900 uint32_t subpassCount;
10901 const uint32_t* pViewMasks;
10902 uint32_t dependencyCount;
10903 const int32_t* pViewOffsets;
10904 uint32_t correlationMaskCount;
10905 const uint32_t* pCorrelationMasks;
10906 };
10907 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10908
10909 struct BindBufferMemoryInfoKHX
10910 {
10911 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10912 : sType( StructureType::eBindBufferMemoryInfoKHX )
10913 , pNext( nullptr )
10914 , buffer( buffer_ )
10915 , memory( memory_ )
10916 , memoryOffset( memoryOffset_ )
10917 , deviceIndexCount( deviceIndexCount_ )
10918 , pDeviceIndices( pDeviceIndices_ )
10919 {
10920 }
10921
10922 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10923 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010924 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010925 }
10926
10927 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10928 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010929 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070010930 return *this;
10931 }
Mark Young0f183a82017-02-28 09:58:04 -070010932 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10933 {
10934 pNext = pNext_;
10935 return *this;
10936 }
10937
10938 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10939 {
10940 buffer = buffer_;
10941 return *this;
10942 }
10943
10944 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10945 {
10946 memory = memory_;
10947 return *this;
10948 }
10949
10950 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10951 {
10952 memoryOffset = memoryOffset_;
10953 return *this;
10954 }
10955
10956 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10957 {
10958 deviceIndexCount = deviceIndexCount_;
10959 return *this;
10960 }
10961
10962 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10963 {
10964 pDeviceIndices = pDeviceIndices_;
10965 return *this;
10966 }
10967
10968 operator const VkBindBufferMemoryInfoKHX&() const
10969 {
10970 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10971 }
10972
10973 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10974 {
10975 return ( sType == rhs.sType )
10976 && ( pNext == rhs.pNext )
10977 && ( buffer == rhs.buffer )
10978 && ( memory == rhs.memory )
10979 && ( memoryOffset == rhs.memoryOffset )
10980 && ( deviceIndexCount == rhs.deviceIndexCount )
10981 && ( pDeviceIndices == rhs.pDeviceIndices );
10982 }
10983
10984 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10985 {
10986 return !operator==( rhs );
10987 }
10988
10989 private:
10990 StructureType sType;
10991
10992 public:
10993 const void* pNext;
10994 Buffer buffer;
10995 DeviceMemory memory;
10996 DeviceSize memoryOffset;
10997 uint32_t deviceIndexCount;
10998 const uint32_t* pDeviceIndices;
10999 };
11000 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
11001
11002 struct BindImageMemoryInfoKHX
11003 {
11004 BindImageMemoryInfoKHX( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11005 : sType( StructureType::eBindImageMemoryInfoKHX )
11006 , pNext( nullptr )
11007 , image( image_ )
11008 , memory( memory_ )
11009 , memoryOffset( memoryOffset_ )
11010 , deviceIndexCount( deviceIndexCount_ )
11011 , pDeviceIndices( pDeviceIndices_ )
11012 , SFRRectCount( SFRRectCount_ )
11013 , pSFRRects( pSFRRects_ )
11014 {
11015 }
11016
11017 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
11018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011019 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011020 }
11021
11022 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
11023 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011024 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011025 return *this;
11026 }
Mark Young0f183a82017-02-28 09:58:04 -070011027 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
11028 {
11029 pNext = pNext_;
11030 return *this;
11031 }
11032
11033 BindImageMemoryInfoKHX& setImage( Image image_ )
11034 {
11035 image = image_;
11036 return *this;
11037 }
11038
11039 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11040 {
11041 memory = memory_;
11042 return *this;
11043 }
11044
11045 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11046 {
11047 memoryOffset = memoryOffset_;
11048 return *this;
11049 }
11050
11051 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11052 {
11053 deviceIndexCount = deviceIndexCount_;
11054 return *this;
11055 }
11056
11057 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11058 {
11059 pDeviceIndices = pDeviceIndices_;
11060 return *this;
11061 }
11062
11063 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11064 {
11065 SFRRectCount = SFRRectCount_;
11066 return *this;
11067 }
11068
11069 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11070 {
11071 pSFRRects = pSFRRects_;
11072 return *this;
11073 }
11074
11075 operator const VkBindImageMemoryInfoKHX&() const
11076 {
11077 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11078 }
11079
11080 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11081 {
11082 return ( sType == rhs.sType )
11083 && ( pNext == rhs.pNext )
11084 && ( image == rhs.image )
11085 && ( memory == rhs.memory )
11086 && ( memoryOffset == rhs.memoryOffset )
11087 && ( deviceIndexCount == rhs.deviceIndexCount )
11088 && ( pDeviceIndices == rhs.pDeviceIndices )
11089 && ( SFRRectCount == rhs.SFRRectCount )
11090 && ( pSFRRects == rhs.pSFRRects );
11091 }
11092
11093 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11094 {
11095 return !operator==( rhs );
11096 }
11097
11098 private:
11099 StructureType sType;
11100
11101 public:
11102 const void* pNext;
11103 Image image;
11104 DeviceMemory memory;
11105 DeviceSize memoryOffset;
11106 uint32_t deviceIndexCount;
11107 const uint32_t* pDeviceIndices;
11108 uint32_t SFRRectCount;
11109 const Rect2D* pSFRRects;
11110 };
11111 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11112
11113 struct DeviceGroupRenderPassBeginInfoKHX
11114 {
11115 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11116 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11117 , pNext( nullptr )
11118 , deviceMask( deviceMask_ )
11119 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11120 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11121 {
11122 }
11123
11124 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011126 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011127 }
11128
11129 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11130 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011131 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011132 return *this;
11133 }
Mark Young0f183a82017-02-28 09:58:04 -070011134 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11135 {
11136 pNext = pNext_;
11137 return *this;
11138 }
11139
11140 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11141 {
11142 deviceMask = deviceMask_;
11143 return *this;
11144 }
11145
11146 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11147 {
11148 deviceRenderAreaCount = deviceRenderAreaCount_;
11149 return *this;
11150 }
11151
11152 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11153 {
11154 pDeviceRenderAreas = pDeviceRenderAreas_;
11155 return *this;
11156 }
11157
11158 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11159 {
11160 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11161 }
11162
11163 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11164 {
11165 return ( sType == rhs.sType )
11166 && ( pNext == rhs.pNext )
11167 && ( deviceMask == rhs.deviceMask )
11168 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11169 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11170 }
11171
11172 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11173 {
11174 return !operator==( rhs );
11175 }
11176
11177 private:
11178 StructureType sType;
11179
11180 public:
11181 const void* pNext;
11182 uint32_t deviceMask;
11183 uint32_t deviceRenderAreaCount;
11184 const Rect2D* pDeviceRenderAreas;
11185 };
11186 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11187
11188 struct DeviceGroupCommandBufferBeginInfoKHX
11189 {
11190 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11191 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11192 , pNext( nullptr )
11193 , deviceMask( deviceMask_ )
11194 {
11195 }
11196
11197 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11198 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011199 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011200 }
11201
11202 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11203 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011204 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011205 return *this;
11206 }
Mark Young0f183a82017-02-28 09:58:04 -070011207 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11208 {
11209 pNext = pNext_;
11210 return *this;
11211 }
11212
11213 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11214 {
11215 deviceMask = deviceMask_;
11216 return *this;
11217 }
11218
11219 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11220 {
11221 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11222 }
11223
11224 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11225 {
11226 return ( sType == rhs.sType )
11227 && ( pNext == rhs.pNext )
11228 && ( deviceMask == rhs.deviceMask );
11229 }
11230
11231 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11232 {
11233 return !operator==( rhs );
11234 }
11235
11236 private:
11237 StructureType sType;
11238
11239 public:
11240 const void* pNext;
11241 uint32_t deviceMask;
11242 };
11243 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11244
11245 struct DeviceGroupSubmitInfoKHX
11246 {
11247 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 )
11248 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11249 , pNext( nullptr )
11250 , waitSemaphoreCount( waitSemaphoreCount_ )
11251 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11252 , commandBufferCount( commandBufferCount_ )
11253 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11254 , signalSemaphoreCount( signalSemaphoreCount_ )
11255 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11256 {
11257 }
11258
11259 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11260 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011261 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011262 }
11263
11264 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11265 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011266 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011267 return *this;
11268 }
Mark Young0f183a82017-02-28 09:58:04 -070011269 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11270 {
11271 pNext = pNext_;
11272 return *this;
11273 }
11274
11275 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11276 {
11277 waitSemaphoreCount = waitSemaphoreCount_;
11278 return *this;
11279 }
11280
11281 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11282 {
11283 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11284 return *this;
11285 }
11286
11287 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11288 {
11289 commandBufferCount = commandBufferCount_;
11290 return *this;
11291 }
11292
11293 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11294 {
11295 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11296 return *this;
11297 }
11298
11299 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11300 {
11301 signalSemaphoreCount = signalSemaphoreCount_;
11302 return *this;
11303 }
11304
11305 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11306 {
11307 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11308 return *this;
11309 }
11310
11311 operator const VkDeviceGroupSubmitInfoKHX&() const
11312 {
11313 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11314 }
11315
11316 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11317 {
11318 return ( sType == rhs.sType )
11319 && ( pNext == rhs.pNext )
11320 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11321 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11322 && ( commandBufferCount == rhs.commandBufferCount )
11323 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11324 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11325 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11326 }
11327
11328 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11329 {
11330 return !operator==( rhs );
11331 }
11332
11333 private:
11334 StructureType sType;
11335
11336 public:
11337 const void* pNext;
11338 uint32_t waitSemaphoreCount;
11339 const uint32_t* pWaitSemaphoreDeviceIndices;
11340 uint32_t commandBufferCount;
11341 const uint32_t* pCommandBufferDeviceMasks;
11342 uint32_t signalSemaphoreCount;
11343 const uint32_t* pSignalSemaphoreDeviceIndices;
11344 };
11345 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11346
11347 struct DeviceGroupBindSparseInfoKHX
11348 {
11349 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11350 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11351 , pNext( nullptr )
11352 , resourceDeviceIndex( resourceDeviceIndex_ )
11353 , memoryDeviceIndex( memoryDeviceIndex_ )
11354 {
11355 }
11356
11357 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11358 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011359 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011360 }
11361
11362 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11363 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011364 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011365 return *this;
11366 }
Mark Young0f183a82017-02-28 09:58:04 -070011367 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11368 {
11369 pNext = pNext_;
11370 return *this;
11371 }
11372
11373 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11374 {
11375 resourceDeviceIndex = resourceDeviceIndex_;
11376 return *this;
11377 }
11378
11379 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11380 {
11381 memoryDeviceIndex = memoryDeviceIndex_;
11382 return *this;
11383 }
11384
11385 operator const VkDeviceGroupBindSparseInfoKHX&() const
11386 {
11387 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11388 }
11389
11390 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11391 {
11392 return ( sType == rhs.sType )
11393 && ( pNext == rhs.pNext )
11394 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11395 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11396 }
11397
11398 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11399 {
11400 return !operator==( rhs );
11401 }
11402
11403 private:
11404 StructureType sType;
11405
11406 public:
11407 const void* pNext;
11408 uint32_t resourceDeviceIndex;
11409 uint32_t memoryDeviceIndex;
11410 };
11411 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11412
11413 struct ImageSwapchainCreateInfoKHX
11414 {
11415 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11416 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11417 , pNext( nullptr )
11418 , swapchain( swapchain_ )
11419 {
11420 }
11421
11422 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011424 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011425 }
11426
11427 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011429 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011430 return *this;
11431 }
Mark Young0f183a82017-02-28 09:58:04 -070011432 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11433 {
11434 pNext = pNext_;
11435 return *this;
11436 }
11437
11438 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11439 {
11440 swapchain = swapchain_;
11441 return *this;
11442 }
11443
11444 operator const VkImageSwapchainCreateInfoKHX&() const
11445 {
11446 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11447 }
11448
11449 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11450 {
11451 return ( sType == rhs.sType )
11452 && ( pNext == rhs.pNext )
11453 && ( swapchain == rhs.swapchain );
11454 }
11455
11456 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11457 {
11458 return !operator==( rhs );
11459 }
11460
11461 private:
11462 StructureType sType;
11463
11464 public:
11465 const void* pNext;
11466 SwapchainKHR swapchain;
11467 };
11468 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11469
11470 struct BindImageMemorySwapchainInfoKHX
11471 {
11472 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11473 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11474 , pNext( nullptr )
11475 , swapchain( swapchain_ )
11476 , imageIndex( imageIndex_ )
11477 {
11478 }
11479
11480 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11481 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011482 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011483 }
11484
11485 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11486 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011487 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011488 return *this;
11489 }
Mark Young0f183a82017-02-28 09:58:04 -070011490 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11491 {
11492 pNext = pNext_;
11493 return *this;
11494 }
11495
11496 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11497 {
11498 swapchain = swapchain_;
11499 return *this;
11500 }
11501
11502 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11503 {
11504 imageIndex = imageIndex_;
11505 return *this;
11506 }
11507
11508 operator const VkBindImageMemorySwapchainInfoKHX&() const
11509 {
11510 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11511 }
11512
11513 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11514 {
11515 return ( sType == rhs.sType )
11516 && ( pNext == rhs.pNext )
11517 && ( swapchain == rhs.swapchain )
11518 && ( imageIndex == rhs.imageIndex );
11519 }
11520
11521 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11522 {
11523 return !operator==( rhs );
11524 }
11525
11526 private:
11527 StructureType sType;
11528
11529 public:
11530 const void* pNext;
11531 SwapchainKHR swapchain;
11532 uint32_t imageIndex;
11533 };
11534 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11535
11536 struct AcquireNextImageInfoKHX
11537 {
11538 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11539 : sType( StructureType::eAcquireNextImageInfoKHX )
11540 , pNext( nullptr )
11541 , swapchain( swapchain_ )
11542 , timeout( timeout_ )
11543 , semaphore( semaphore_ )
11544 , fence( fence_ )
11545 , deviceMask( deviceMask_ )
11546 {
11547 }
11548
11549 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11550 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011551 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011552 }
11553
11554 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11555 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011556 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011557 return *this;
11558 }
Mark Young0f183a82017-02-28 09:58:04 -070011559 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11560 {
11561 pNext = pNext_;
11562 return *this;
11563 }
11564
11565 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11566 {
11567 swapchain = swapchain_;
11568 return *this;
11569 }
11570
11571 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11572 {
11573 timeout = timeout_;
11574 return *this;
11575 }
11576
11577 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11578 {
11579 semaphore = semaphore_;
11580 return *this;
11581 }
11582
11583 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11584 {
11585 fence = fence_;
11586 return *this;
11587 }
11588
11589 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11590 {
11591 deviceMask = deviceMask_;
11592 return *this;
11593 }
11594
11595 operator const VkAcquireNextImageInfoKHX&() const
11596 {
11597 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11598 }
11599
11600 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11601 {
11602 return ( sType == rhs.sType )
11603 && ( pNext == rhs.pNext )
11604 && ( swapchain == rhs.swapchain )
11605 && ( timeout == rhs.timeout )
11606 && ( semaphore == rhs.semaphore )
11607 && ( fence == rhs.fence )
11608 && ( deviceMask == rhs.deviceMask );
11609 }
11610
11611 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11612 {
11613 return !operator==( rhs );
11614 }
11615
11616 private:
11617 StructureType sType;
11618
11619 public:
11620 const void* pNext;
11621 SwapchainKHR swapchain;
11622 uint64_t timeout;
11623 Semaphore semaphore;
11624 Fence fence;
11625 uint32_t deviceMask;
11626 };
11627 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11628
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011629 struct HdrMetadataEXT
11630 {
11631 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 )
11632 : sType( StructureType::eHdrMetadataEXT )
11633 , pNext( nullptr )
11634 , displayPrimaryRed( displayPrimaryRed_ )
11635 , displayPrimaryGreen( displayPrimaryGreen_ )
11636 , displayPrimaryBlue( displayPrimaryBlue_ )
11637 , whitePoint( whitePoint_ )
11638 , maxLuminance( maxLuminance_ )
11639 , minLuminance( minLuminance_ )
11640 , maxContentLightLevel( maxContentLightLevel_ )
11641 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11642 {
11643 }
11644
11645 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11646 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011647 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011648 }
11649
11650 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11651 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011652 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011653 return *this;
11654 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011655 HdrMetadataEXT& setPNext( const void* pNext_ )
11656 {
11657 pNext = pNext_;
11658 return *this;
11659 }
11660
11661 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11662 {
11663 displayPrimaryRed = displayPrimaryRed_;
11664 return *this;
11665 }
11666
11667 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11668 {
11669 displayPrimaryGreen = displayPrimaryGreen_;
11670 return *this;
11671 }
11672
11673 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11674 {
11675 displayPrimaryBlue = displayPrimaryBlue_;
11676 return *this;
11677 }
11678
11679 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11680 {
11681 whitePoint = whitePoint_;
11682 return *this;
11683 }
11684
11685 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11686 {
11687 maxLuminance = maxLuminance_;
11688 return *this;
11689 }
11690
11691 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11692 {
11693 minLuminance = minLuminance_;
11694 return *this;
11695 }
11696
11697 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11698 {
11699 maxContentLightLevel = maxContentLightLevel_;
11700 return *this;
11701 }
11702
11703 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11704 {
11705 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11706 return *this;
11707 }
11708
11709 operator const VkHdrMetadataEXT&() const
11710 {
11711 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11712 }
11713
11714 bool operator==( HdrMetadataEXT const& rhs ) const
11715 {
11716 return ( sType == rhs.sType )
11717 && ( pNext == rhs.pNext )
11718 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11719 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11720 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11721 && ( whitePoint == rhs.whitePoint )
11722 && ( maxLuminance == rhs.maxLuminance )
11723 && ( minLuminance == rhs.minLuminance )
11724 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11725 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11726 }
11727
11728 bool operator!=( HdrMetadataEXT const& rhs ) const
11729 {
11730 return !operator==( rhs );
11731 }
11732
11733 private:
11734 StructureType sType;
11735
11736 public:
11737 const void* pNext;
11738 XYColorEXT displayPrimaryRed;
11739 XYColorEXT displayPrimaryGreen;
11740 XYColorEXT displayPrimaryBlue;
11741 XYColorEXT whitePoint;
11742 float maxLuminance;
11743 float minLuminance;
11744 float maxContentLightLevel;
11745 float maxFrameAverageLightLevel;
11746 };
11747 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11748
11749 struct PresentTimesInfoGOOGLE
11750 {
11751 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11752 : sType( StructureType::ePresentTimesInfoGOOGLE )
11753 , pNext( nullptr )
11754 , swapchainCount( swapchainCount_ )
11755 , pTimes( pTimes_ )
11756 {
11757 }
11758
11759 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011761 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011762 }
11763
11764 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11765 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011766 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011767 return *this;
11768 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011769 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11770 {
11771 pNext = pNext_;
11772 return *this;
11773 }
11774
11775 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11776 {
11777 swapchainCount = swapchainCount_;
11778 return *this;
11779 }
11780
11781 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11782 {
11783 pTimes = pTimes_;
11784 return *this;
11785 }
11786
11787 operator const VkPresentTimesInfoGOOGLE&() const
11788 {
11789 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11790 }
11791
11792 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11793 {
11794 return ( sType == rhs.sType )
11795 && ( pNext == rhs.pNext )
11796 && ( swapchainCount == rhs.swapchainCount )
11797 && ( pTimes == rhs.pTimes );
11798 }
11799
11800 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11801 {
11802 return !operator==( rhs );
11803 }
11804
11805 private:
11806 StructureType sType;
11807
11808 public:
11809 const void* pNext;
11810 uint32_t swapchainCount;
11811 const PresentTimeGOOGLE* pTimes;
11812 };
11813 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11814
Mark Young0f183a82017-02-28 09:58:04 -070011815#ifdef VK_USE_PLATFORM_IOS_MVK
11816 struct IOSSurfaceCreateInfoMVK
11817 {
11818 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11819 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11820 , pNext( nullptr )
11821 , flags( flags_ )
11822 , pView( pView_ )
11823 {
11824 }
11825
11826 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11827 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011828 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011829 }
11830
11831 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11832 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011833 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011834 return *this;
11835 }
Mark Young0f183a82017-02-28 09:58:04 -070011836 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11837 {
11838 pNext = pNext_;
11839 return *this;
11840 }
11841
11842 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11843 {
11844 flags = flags_;
11845 return *this;
11846 }
11847
11848 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11849 {
11850 pView = pView_;
11851 return *this;
11852 }
11853
11854 operator const VkIOSSurfaceCreateInfoMVK&() const
11855 {
11856 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11857 }
11858
11859 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11860 {
11861 return ( sType == rhs.sType )
11862 && ( pNext == rhs.pNext )
11863 && ( flags == rhs.flags )
11864 && ( pView == rhs.pView );
11865 }
11866
11867 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11868 {
11869 return !operator==( rhs );
11870 }
11871
11872 private:
11873 StructureType sType;
11874
11875 public:
11876 const void* pNext;
11877 IOSSurfaceCreateFlagsMVK flags;
11878 const void* pView;
11879 };
11880 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11881#endif /*VK_USE_PLATFORM_IOS_MVK*/
11882
11883#ifdef VK_USE_PLATFORM_MACOS_MVK
11884 struct MacOSSurfaceCreateInfoMVK
11885 {
11886 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11887 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11888 , pNext( nullptr )
11889 , flags( flags_ )
11890 , pView( pView_ )
11891 {
11892 }
11893
11894 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11895 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011896 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011897 }
11898
11899 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11900 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011901 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070011902 return *this;
11903 }
Mark Young0f183a82017-02-28 09:58:04 -070011904 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11905 {
11906 pNext = pNext_;
11907 return *this;
11908 }
11909
11910 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11911 {
11912 flags = flags_;
11913 return *this;
11914 }
11915
11916 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11917 {
11918 pView = pView_;
11919 return *this;
11920 }
11921
11922 operator const VkMacOSSurfaceCreateInfoMVK&() const
11923 {
11924 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11925 }
11926
11927 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11928 {
11929 return ( sType == rhs.sType )
11930 && ( pNext == rhs.pNext )
11931 && ( flags == rhs.flags )
11932 && ( pView == rhs.pView );
11933 }
11934
11935 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11936 {
11937 return !operator==( rhs );
11938 }
11939
11940 private:
11941 StructureType sType;
11942
11943 public:
11944 const void* pNext;
11945 MacOSSurfaceCreateFlagsMVK flags;
11946 const void* pView;
11947 };
11948 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11949#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11950
11951 struct PipelineViewportWScalingStateCreateInfoNV
11952 {
11953 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11954 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11955 , pNext( nullptr )
11956 , viewportWScalingEnable( viewportWScalingEnable_ )
11957 , viewportCount( viewportCount_ )
11958 , pViewportWScalings( pViewportWScalings_ )
11959 {
11960 }
11961
11962 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011964 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070011965 }
11966
11967 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11968 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011969 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070011970 return *this;
11971 }
Mark Young0f183a82017-02-28 09:58:04 -070011972 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11973 {
11974 pNext = pNext_;
11975 return *this;
11976 }
11977
11978 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11979 {
11980 viewportWScalingEnable = viewportWScalingEnable_;
11981 return *this;
11982 }
11983
11984 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11985 {
11986 viewportCount = viewportCount_;
11987 return *this;
11988 }
11989
11990 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11991 {
11992 pViewportWScalings = pViewportWScalings_;
11993 return *this;
11994 }
11995
11996 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11997 {
11998 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11999 }
12000
12001 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12002 {
12003 return ( sType == rhs.sType )
12004 && ( pNext == rhs.pNext )
12005 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12006 && ( viewportCount == rhs.viewportCount )
12007 && ( pViewportWScalings == rhs.pViewportWScalings );
12008 }
12009
12010 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12011 {
12012 return !operator==( rhs );
12013 }
12014
12015 private:
12016 StructureType sType;
12017
12018 public:
12019 const void* pNext;
12020 Bool32 viewportWScalingEnable;
12021 uint32_t viewportCount;
12022 const ViewportWScalingNV* pViewportWScalings;
12023 };
12024 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12025
12026 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12027 {
12028 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12029 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12030 , pNext( nullptr )
12031 , maxDiscardRectangles( maxDiscardRectangles_ )
12032 {
12033 }
12034
12035 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12036 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012037 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012038 }
12039
12040 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12041 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012042 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012043 return *this;
12044 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012045 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012046 {
12047 pNext = pNext_;
12048 return *this;
12049 }
12050
12051 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12052 {
12053 maxDiscardRectangles = maxDiscardRectangles_;
12054 return *this;
12055 }
12056
12057 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12058 {
12059 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12060 }
12061
12062 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12063 {
12064 return ( sType == rhs.sType )
12065 && ( pNext == rhs.pNext )
12066 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12067 }
12068
12069 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12070 {
12071 return !operator==( rhs );
12072 }
12073
12074 private:
12075 StructureType sType;
12076
12077 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012078 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012079 uint32_t maxDiscardRectangles;
12080 };
12081 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12082
12083 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12084 {
12085 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12086 {
12087 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12088 }
12089
12090 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12091 {
12092 return ( sType == rhs.sType )
12093 && ( pNext == rhs.pNext )
12094 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12095 }
12096
12097 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12098 {
12099 return !operator==( rhs );
12100 }
12101
12102 private:
12103 StructureType sType;
12104
12105 public:
12106 void* pNext;
12107 Bool32 perViewPositionAllComponents;
12108 };
12109 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12110
Mark Lobodzinski54385432017-05-15 10:27:52 -060012111 struct PhysicalDeviceSurfaceInfo2KHR
12112 {
12113 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12114 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12115 , pNext( nullptr )
12116 , surface( surface_ )
12117 {
12118 }
12119
12120 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12121 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012122 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012123 }
12124
12125 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12126 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012127 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012128 return *this;
12129 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012130 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12131 {
12132 pNext = pNext_;
12133 return *this;
12134 }
12135
12136 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12137 {
12138 surface = surface_;
12139 return *this;
12140 }
12141
12142 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12143 {
12144 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12145 }
12146
12147 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12148 {
12149 return ( sType == rhs.sType )
12150 && ( pNext == rhs.pNext )
12151 && ( surface == rhs.surface );
12152 }
12153
12154 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12155 {
12156 return !operator==( rhs );
12157 }
12158
12159 private:
12160 StructureType sType;
12161
12162 public:
12163 const void* pNext;
12164 SurfaceKHR surface;
12165 };
12166 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12167
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012168 struct TextureLODGatherFormatPropertiesAMD
12169 {
12170 operator const VkTextureLODGatherFormatPropertiesAMD&() const
12171 {
12172 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
12173 }
12174
12175 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12176 {
12177 return ( sType == rhs.sType )
12178 && ( pNext == rhs.pNext )
12179 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
12180 }
12181
12182 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12183 {
12184 return !operator==( rhs );
12185 }
12186
12187 private:
12188 StructureType sType;
12189
12190 public:
12191 void* pNext;
12192 Bool32 supportsTextureGatherLODBiasAMD;
12193 };
12194 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
12195
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012196 enum class SubpassContents
12197 {
12198 eInline = VK_SUBPASS_CONTENTS_INLINE,
12199 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
12200 };
12201
12202 struct PresentInfoKHR
12203 {
12204 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 )
12205 : sType( StructureType::ePresentInfoKHR )
12206 , pNext( nullptr )
12207 , waitSemaphoreCount( waitSemaphoreCount_ )
12208 , pWaitSemaphores( pWaitSemaphores_ )
12209 , swapchainCount( swapchainCount_ )
12210 , pSwapchains( pSwapchains_ )
12211 , pImageIndices( pImageIndices_ )
12212 , pResults( pResults_ )
12213 {
12214 }
12215
12216 PresentInfoKHR( VkPresentInfoKHR const & rhs )
12217 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012218 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012219 }
12220
12221 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
12222 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012223 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012224 return *this;
12225 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012226 PresentInfoKHR& setPNext( const void* pNext_ )
12227 {
12228 pNext = pNext_;
12229 return *this;
12230 }
12231
12232 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
12233 {
12234 waitSemaphoreCount = waitSemaphoreCount_;
12235 return *this;
12236 }
12237
12238 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
12239 {
12240 pWaitSemaphores = pWaitSemaphores_;
12241 return *this;
12242 }
12243
12244 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
12245 {
12246 swapchainCount = swapchainCount_;
12247 return *this;
12248 }
12249
12250 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
12251 {
12252 pSwapchains = pSwapchains_;
12253 return *this;
12254 }
12255
12256 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
12257 {
12258 pImageIndices = pImageIndices_;
12259 return *this;
12260 }
12261
12262 PresentInfoKHR& setPResults( Result* pResults_ )
12263 {
12264 pResults = pResults_;
12265 return *this;
12266 }
12267
12268 operator const VkPresentInfoKHR&() const
12269 {
12270 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
12271 }
12272
12273 bool operator==( PresentInfoKHR const& rhs ) const
12274 {
12275 return ( sType == rhs.sType )
12276 && ( pNext == rhs.pNext )
12277 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12278 && ( pWaitSemaphores == rhs.pWaitSemaphores )
12279 && ( swapchainCount == rhs.swapchainCount )
12280 && ( pSwapchains == rhs.pSwapchains )
12281 && ( pImageIndices == rhs.pImageIndices )
12282 && ( pResults == rhs.pResults );
12283 }
12284
12285 bool operator!=( PresentInfoKHR const& rhs ) const
12286 {
12287 return !operator==( rhs );
12288 }
12289
12290 private:
12291 StructureType sType;
12292
12293 public:
12294 const void* pNext;
12295 uint32_t waitSemaphoreCount;
12296 const Semaphore* pWaitSemaphores;
12297 uint32_t swapchainCount;
12298 const SwapchainKHR* pSwapchains;
12299 const uint32_t* pImageIndices;
12300 Result* pResults;
12301 };
12302 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12303
12304 enum class DynamicState
12305 {
12306 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12307 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12308 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12309 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12310 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12311 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12312 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12313 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012314 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12315 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12316 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012317 };
12318
12319 struct PipelineDynamicStateCreateInfo
12320 {
12321 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12322 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12323 , pNext( nullptr )
12324 , flags( flags_ )
12325 , dynamicStateCount( dynamicStateCount_ )
12326 , pDynamicStates( pDynamicStates_ )
12327 {
12328 }
12329
12330 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12331 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012332 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012333 }
12334
12335 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12336 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012337 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012338 return *this;
12339 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012340 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12341 {
12342 pNext = pNext_;
12343 return *this;
12344 }
12345
12346 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12347 {
12348 flags = flags_;
12349 return *this;
12350 }
12351
12352 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12353 {
12354 dynamicStateCount = dynamicStateCount_;
12355 return *this;
12356 }
12357
12358 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12359 {
12360 pDynamicStates = pDynamicStates_;
12361 return *this;
12362 }
12363
12364 operator const VkPipelineDynamicStateCreateInfo&() const
12365 {
12366 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12367 }
12368
12369 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12370 {
12371 return ( sType == rhs.sType )
12372 && ( pNext == rhs.pNext )
12373 && ( flags == rhs.flags )
12374 && ( dynamicStateCount == rhs.dynamicStateCount )
12375 && ( pDynamicStates == rhs.pDynamicStates );
12376 }
12377
12378 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12379 {
12380 return !operator==( rhs );
12381 }
12382
12383 private:
12384 StructureType sType;
12385
12386 public:
12387 const void* pNext;
12388 PipelineDynamicStateCreateFlags flags;
12389 uint32_t dynamicStateCount;
12390 const DynamicState* pDynamicStates;
12391 };
12392 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12393
Mark Young0f183a82017-02-28 09:58:04 -070012394 enum class DescriptorUpdateTemplateTypeKHR
12395 {
12396 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12397 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12398 };
12399
12400 struct DescriptorUpdateTemplateCreateInfoKHR
12401 {
12402 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 )
12403 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12404 , pNext( nullptr )
12405 , flags( flags_ )
12406 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12407 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12408 , templateType( templateType_ )
12409 , descriptorSetLayout( descriptorSetLayout_ )
12410 , pipelineBindPoint( pipelineBindPoint_ )
12411 , pipelineLayout( pipelineLayout_ )
12412 , set( set_ )
12413 {
12414 }
12415
12416 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12417 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012418 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070012419 }
12420
12421 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12422 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012423 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070012424 return *this;
12425 }
Mark Young0f183a82017-02-28 09:58:04 -070012426 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12427 {
12428 pNext = pNext_;
12429 return *this;
12430 }
12431
12432 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12433 {
12434 flags = flags_;
12435 return *this;
12436 }
12437
12438 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12439 {
12440 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12441 return *this;
12442 }
12443
12444 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12445 {
12446 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12447 return *this;
12448 }
12449
12450 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12451 {
12452 templateType = templateType_;
12453 return *this;
12454 }
12455
12456 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12457 {
12458 descriptorSetLayout = descriptorSetLayout_;
12459 return *this;
12460 }
12461
12462 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12463 {
12464 pipelineBindPoint = pipelineBindPoint_;
12465 return *this;
12466 }
12467
12468 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12469 {
12470 pipelineLayout = pipelineLayout_;
12471 return *this;
12472 }
12473
12474 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12475 {
12476 set = set_;
12477 return *this;
12478 }
12479
12480 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12481 {
12482 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12483 }
12484
12485 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12486 {
12487 return ( sType == rhs.sType )
12488 && ( pNext == rhs.pNext )
12489 && ( flags == rhs.flags )
12490 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12491 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12492 && ( templateType == rhs.templateType )
12493 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12494 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12495 && ( pipelineLayout == rhs.pipelineLayout )
12496 && ( set == rhs.set );
12497 }
12498
12499 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12500 {
12501 return !operator==( rhs );
12502 }
12503
12504 private:
12505 StructureType sType;
12506
12507 public:
12508 void* pNext;
12509 DescriptorUpdateTemplateCreateFlagsKHR flags;
12510 uint32_t descriptorUpdateEntryCount;
12511 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12512 DescriptorUpdateTemplateTypeKHR templateType;
12513 DescriptorSetLayout descriptorSetLayout;
12514 PipelineBindPoint pipelineBindPoint;
12515 PipelineLayout pipelineLayout;
12516 uint32_t set;
12517 };
12518 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12519
Mark Lobodzinski54385432017-05-15 10:27:52 -060012520 enum class ObjectType
12521 {
12522 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
12523 eInstance = VK_OBJECT_TYPE_INSTANCE,
12524 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
12525 eDevice = VK_OBJECT_TYPE_DEVICE,
12526 eQueue = VK_OBJECT_TYPE_QUEUE,
12527 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
12528 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
12529 eFence = VK_OBJECT_TYPE_FENCE,
12530 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
12531 eBuffer = VK_OBJECT_TYPE_BUFFER,
12532 eImage = VK_OBJECT_TYPE_IMAGE,
12533 eEvent = VK_OBJECT_TYPE_EVENT,
12534 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
12535 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
12536 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
12537 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
12538 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
12539 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
12540 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
12541 ePipeline = VK_OBJECT_TYPE_PIPELINE,
12542 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
12543 eSampler = VK_OBJECT_TYPE_SAMPLER,
12544 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
12545 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
12546 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
12547 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
12548 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
12549 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
12550 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
12551 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
12552 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
12553 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
12554 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
12555 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX
12556 };
12557
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012558 enum class QueueFlagBits
12559 {
12560 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12561 eCompute = VK_QUEUE_COMPUTE_BIT,
12562 eTransfer = VK_QUEUE_TRANSFER_BIT,
12563 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12564 };
12565
12566 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12567
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012568 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012569 {
12570 return QueueFlags( bit0 ) | bit1;
12571 }
12572
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012573 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12574 {
12575 return ~( QueueFlags( bits ) );
12576 }
12577
12578 template <> struct FlagTraits<QueueFlagBits>
12579 {
12580 enum
12581 {
12582 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12583 };
12584 };
12585
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012586 struct QueueFamilyProperties
12587 {
12588 operator const VkQueueFamilyProperties&() const
12589 {
12590 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12591 }
12592
12593 bool operator==( QueueFamilyProperties const& rhs ) const
12594 {
12595 return ( queueFlags == rhs.queueFlags )
12596 && ( queueCount == rhs.queueCount )
12597 && ( timestampValidBits == rhs.timestampValidBits )
12598 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12599 }
12600
12601 bool operator!=( QueueFamilyProperties const& rhs ) const
12602 {
12603 return !operator==( rhs );
12604 }
12605
12606 QueueFlags queueFlags;
12607 uint32_t queueCount;
12608 uint32_t timestampValidBits;
12609 Extent3D minImageTransferGranularity;
12610 };
12611 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12612
Mark Young39389872017-01-19 21:10:49 -070012613 struct QueueFamilyProperties2KHR
12614 {
12615 operator const VkQueueFamilyProperties2KHR&() const
12616 {
12617 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12618 }
12619
12620 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12621 {
12622 return ( sType == rhs.sType )
12623 && ( pNext == rhs.pNext )
12624 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12625 }
12626
12627 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12628 {
12629 return !operator==( rhs );
12630 }
12631
12632 private:
12633 StructureType sType;
12634
12635 public:
12636 void* pNext;
12637 QueueFamilyProperties queueFamilyProperties;
12638 };
12639 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12640
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012641 enum class MemoryPropertyFlagBits
12642 {
12643 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12644 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12645 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12646 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12647 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12648 };
12649
12650 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12651
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012652 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012653 {
12654 return MemoryPropertyFlags( bit0 ) | bit1;
12655 }
12656
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012657 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12658 {
12659 return ~( MemoryPropertyFlags( bits ) );
12660 }
12661
12662 template <> struct FlagTraits<MemoryPropertyFlagBits>
12663 {
12664 enum
12665 {
12666 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12667 };
12668 };
12669
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012670 struct MemoryType
12671 {
12672 operator const VkMemoryType&() const
12673 {
12674 return *reinterpret_cast<const VkMemoryType*>(this);
12675 }
12676
12677 bool operator==( MemoryType const& rhs ) const
12678 {
12679 return ( propertyFlags == rhs.propertyFlags )
12680 && ( heapIndex == rhs.heapIndex );
12681 }
12682
12683 bool operator!=( MemoryType const& rhs ) const
12684 {
12685 return !operator==( rhs );
12686 }
12687
12688 MemoryPropertyFlags propertyFlags;
12689 uint32_t heapIndex;
12690 };
12691 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12692
12693 enum class MemoryHeapFlagBits
12694 {
Mark Young0f183a82017-02-28 09:58:04 -070012695 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12696 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012697 };
12698
12699 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12700
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012701 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012702 {
12703 return MemoryHeapFlags( bit0 ) | bit1;
12704 }
12705
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012706 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12707 {
12708 return ~( MemoryHeapFlags( bits ) );
12709 }
12710
12711 template <> struct FlagTraits<MemoryHeapFlagBits>
12712 {
12713 enum
12714 {
Mark Young0f183a82017-02-28 09:58:04 -070012715 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012716 };
12717 };
12718
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012719 struct MemoryHeap
12720 {
12721 operator const VkMemoryHeap&() const
12722 {
12723 return *reinterpret_cast<const VkMemoryHeap*>(this);
12724 }
12725
12726 bool operator==( MemoryHeap const& rhs ) const
12727 {
12728 return ( size == rhs.size )
12729 && ( flags == rhs.flags );
12730 }
12731
12732 bool operator!=( MemoryHeap const& rhs ) const
12733 {
12734 return !operator==( rhs );
12735 }
12736
12737 DeviceSize size;
12738 MemoryHeapFlags flags;
12739 };
12740 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12741
12742 struct PhysicalDeviceMemoryProperties
12743 {
12744 operator const VkPhysicalDeviceMemoryProperties&() const
12745 {
12746 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12747 }
12748
12749 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12750 {
12751 return ( memoryTypeCount == rhs.memoryTypeCount )
12752 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12753 && ( memoryHeapCount == rhs.memoryHeapCount )
12754 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12755 }
12756
12757 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12758 {
12759 return !operator==( rhs );
12760 }
12761
12762 uint32_t memoryTypeCount;
12763 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12764 uint32_t memoryHeapCount;
12765 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12766 };
12767 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12768
Mark Young39389872017-01-19 21:10:49 -070012769 struct PhysicalDeviceMemoryProperties2KHR
12770 {
12771 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12772 {
12773 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12774 }
12775
12776 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12777 {
12778 return ( sType == rhs.sType )
12779 && ( pNext == rhs.pNext )
12780 && ( memoryProperties == rhs.memoryProperties );
12781 }
12782
12783 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12784 {
12785 return !operator==( rhs );
12786 }
12787
12788 private:
12789 StructureType sType;
12790
12791 public:
12792 void* pNext;
12793 PhysicalDeviceMemoryProperties memoryProperties;
12794 };
12795 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12796
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012797 enum class AccessFlagBits
12798 {
12799 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12800 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12801 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12802 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12803 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12804 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12805 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12806 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12807 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12808 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12809 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12810 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12811 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12812 eHostRead = VK_ACCESS_HOST_READ_BIT,
12813 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12814 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012815 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12816 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12817 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012818 };
12819
12820 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012822 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012823 {
12824 return AccessFlags( bit0 ) | bit1;
12825 }
12826
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012827 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12828 {
12829 return ~( AccessFlags( bits ) );
12830 }
12831
12832 template <> struct FlagTraits<AccessFlagBits>
12833 {
12834 enum
12835 {
12836 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)
12837 };
12838 };
12839
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012840 struct MemoryBarrier
12841 {
12842 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12843 : sType( StructureType::eMemoryBarrier )
12844 , pNext( nullptr )
12845 , srcAccessMask( srcAccessMask_ )
12846 , dstAccessMask( dstAccessMask_ )
12847 {
12848 }
12849
12850 MemoryBarrier( VkMemoryBarrier const & rhs )
12851 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012852 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012853 }
12854
12855 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12856 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012857 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012858 return *this;
12859 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012860 MemoryBarrier& setPNext( const void* pNext_ )
12861 {
12862 pNext = pNext_;
12863 return *this;
12864 }
12865
12866 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12867 {
12868 srcAccessMask = srcAccessMask_;
12869 return *this;
12870 }
12871
12872 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12873 {
12874 dstAccessMask = dstAccessMask_;
12875 return *this;
12876 }
12877
12878 operator const VkMemoryBarrier&() const
12879 {
12880 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12881 }
12882
12883 bool operator==( MemoryBarrier const& rhs ) const
12884 {
12885 return ( sType == rhs.sType )
12886 && ( pNext == rhs.pNext )
12887 && ( srcAccessMask == rhs.srcAccessMask )
12888 && ( dstAccessMask == rhs.dstAccessMask );
12889 }
12890
12891 bool operator!=( MemoryBarrier const& rhs ) const
12892 {
12893 return !operator==( rhs );
12894 }
12895
12896 private:
12897 StructureType sType;
12898
12899 public:
12900 const void* pNext;
12901 AccessFlags srcAccessMask;
12902 AccessFlags dstAccessMask;
12903 };
12904 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12905
12906 struct BufferMemoryBarrier
12907 {
12908 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12909 : sType( StructureType::eBufferMemoryBarrier )
12910 , pNext( nullptr )
12911 , srcAccessMask( srcAccessMask_ )
12912 , dstAccessMask( dstAccessMask_ )
12913 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12914 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12915 , buffer( buffer_ )
12916 , offset( offset_ )
12917 , size( size_ )
12918 {
12919 }
12920
12921 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12922 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012923 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012924 }
12925
12926 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012928 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012929 return *this;
12930 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012931 BufferMemoryBarrier& setPNext( const void* pNext_ )
12932 {
12933 pNext = pNext_;
12934 return *this;
12935 }
12936
12937 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12938 {
12939 srcAccessMask = srcAccessMask_;
12940 return *this;
12941 }
12942
12943 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12944 {
12945 dstAccessMask = dstAccessMask_;
12946 return *this;
12947 }
12948
12949 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12950 {
12951 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12952 return *this;
12953 }
12954
12955 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12956 {
12957 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12958 return *this;
12959 }
12960
12961 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12962 {
12963 buffer = buffer_;
12964 return *this;
12965 }
12966
12967 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12968 {
12969 offset = offset_;
12970 return *this;
12971 }
12972
12973 BufferMemoryBarrier& setSize( DeviceSize size_ )
12974 {
12975 size = size_;
12976 return *this;
12977 }
12978
12979 operator const VkBufferMemoryBarrier&() const
12980 {
12981 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12982 }
12983
12984 bool operator==( BufferMemoryBarrier const& rhs ) const
12985 {
12986 return ( sType == rhs.sType )
12987 && ( pNext == rhs.pNext )
12988 && ( srcAccessMask == rhs.srcAccessMask )
12989 && ( dstAccessMask == rhs.dstAccessMask )
12990 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12991 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12992 && ( buffer == rhs.buffer )
12993 && ( offset == rhs.offset )
12994 && ( size == rhs.size );
12995 }
12996
12997 bool operator!=( BufferMemoryBarrier const& rhs ) const
12998 {
12999 return !operator==( rhs );
13000 }
13001
13002 private:
13003 StructureType sType;
13004
13005 public:
13006 const void* pNext;
13007 AccessFlags srcAccessMask;
13008 AccessFlags dstAccessMask;
13009 uint32_t srcQueueFamilyIndex;
13010 uint32_t dstQueueFamilyIndex;
13011 Buffer buffer;
13012 DeviceSize offset;
13013 DeviceSize size;
13014 };
13015 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
13016
13017 enum class BufferUsageFlagBits
13018 {
13019 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
13020 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
13021 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
13022 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
13023 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
13024 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
13025 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
13026 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
13027 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
13028 };
13029
13030 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
13031
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013032 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013033 {
13034 return BufferUsageFlags( bit0 ) | bit1;
13035 }
13036
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013037 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
13038 {
13039 return ~( BufferUsageFlags( bits ) );
13040 }
13041
13042 template <> struct FlagTraits<BufferUsageFlagBits>
13043 {
13044 enum
13045 {
13046 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)
13047 };
13048 };
13049
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013050 enum class BufferCreateFlagBits
13051 {
13052 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
13053 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
13054 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
13055 };
13056
13057 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
13058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013059 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013060 {
13061 return BufferCreateFlags( bit0 ) | bit1;
13062 }
13063
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013064 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
13065 {
13066 return ~( BufferCreateFlags( bits ) );
13067 }
13068
13069 template <> struct FlagTraits<BufferCreateFlagBits>
13070 {
13071 enum
13072 {
13073 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
13074 };
13075 };
13076
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013077 struct BufferCreateInfo
13078 {
13079 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
13080 : sType( StructureType::eBufferCreateInfo )
13081 , pNext( nullptr )
13082 , flags( flags_ )
13083 , size( size_ )
13084 , usage( usage_ )
13085 , sharingMode( sharingMode_ )
13086 , queueFamilyIndexCount( queueFamilyIndexCount_ )
13087 , pQueueFamilyIndices( pQueueFamilyIndices_ )
13088 {
13089 }
13090
13091 BufferCreateInfo( VkBufferCreateInfo const & rhs )
13092 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013093 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013094 }
13095
13096 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
13097 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013098 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013099 return *this;
13100 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013101 BufferCreateInfo& setPNext( const void* pNext_ )
13102 {
13103 pNext = pNext_;
13104 return *this;
13105 }
13106
13107 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
13108 {
13109 flags = flags_;
13110 return *this;
13111 }
13112
13113 BufferCreateInfo& setSize( DeviceSize size_ )
13114 {
13115 size = size_;
13116 return *this;
13117 }
13118
13119 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
13120 {
13121 usage = usage_;
13122 return *this;
13123 }
13124
13125 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
13126 {
13127 sharingMode = sharingMode_;
13128 return *this;
13129 }
13130
13131 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
13132 {
13133 queueFamilyIndexCount = queueFamilyIndexCount_;
13134 return *this;
13135 }
13136
13137 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
13138 {
13139 pQueueFamilyIndices = pQueueFamilyIndices_;
13140 return *this;
13141 }
13142
13143 operator const VkBufferCreateInfo&() const
13144 {
13145 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13146 }
13147
13148 bool operator==( BufferCreateInfo const& rhs ) const
13149 {
13150 return ( sType == rhs.sType )
13151 && ( pNext == rhs.pNext )
13152 && ( flags == rhs.flags )
13153 && ( size == rhs.size )
13154 && ( usage == rhs.usage )
13155 && ( sharingMode == rhs.sharingMode )
13156 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13157 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13158 }
13159
13160 bool operator!=( BufferCreateInfo const& rhs ) const
13161 {
13162 return !operator==( rhs );
13163 }
13164
13165 private:
13166 StructureType sType;
13167
13168 public:
13169 const void* pNext;
13170 BufferCreateFlags flags;
13171 DeviceSize size;
13172 BufferUsageFlags usage;
13173 SharingMode sharingMode;
13174 uint32_t queueFamilyIndexCount;
13175 const uint32_t* pQueueFamilyIndices;
13176 };
13177 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13178
13179 enum class ShaderStageFlagBits
13180 {
13181 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13182 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13183 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13184 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13185 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13186 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13187 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13188 eAll = VK_SHADER_STAGE_ALL
13189 };
13190
13191 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13192
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013193 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013194 {
13195 return ShaderStageFlags( bit0 ) | bit1;
13196 }
13197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013198 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
13199 {
13200 return ~( ShaderStageFlags( bits ) );
13201 }
13202
13203 template <> struct FlagTraits<ShaderStageFlagBits>
13204 {
13205 enum
13206 {
13207 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)
13208 };
13209 };
13210
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013211 struct DescriptorSetLayoutBinding
13212 {
13213 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
13214 : binding( binding_ )
13215 , descriptorType( descriptorType_ )
13216 , descriptorCount( descriptorCount_ )
13217 , stageFlags( stageFlags_ )
13218 , pImmutableSamplers( pImmutableSamplers_ )
13219 {
13220 }
13221
13222 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
13223 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013224 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013225 }
13226
13227 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
13228 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013229 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013230 return *this;
13231 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013232 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
13233 {
13234 binding = binding_;
13235 return *this;
13236 }
13237
13238 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
13239 {
13240 descriptorType = descriptorType_;
13241 return *this;
13242 }
13243
13244 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
13245 {
13246 descriptorCount = descriptorCount_;
13247 return *this;
13248 }
13249
13250 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
13251 {
13252 stageFlags = stageFlags_;
13253 return *this;
13254 }
13255
13256 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
13257 {
13258 pImmutableSamplers = pImmutableSamplers_;
13259 return *this;
13260 }
13261
13262 operator const VkDescriptorSetLayoutBinding&() const
13263 {
13264 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
13265 }
13266
13267 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
13268 {
13269 return ( binding == rhs.binding )
13270 && ( descriptorType == rhs.descriptorType )
13271 && ( descriptorCount == rhs.descriptorCount )
13272 && ( stageFlags == rhs.stageFlags )
13273 && ( pImmutableSamplers == rhs.pImmutableSamplers );
13274 }
13275
13276 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
13277 {
13278 return !operator==( rhs );
13279 }
13280
13281 uint32_t binding;
13282 DescriptorType descriptorType;
13283 uint32_t descriptorCount;
13284 ShaderStageFlags stageFlags;
13285 const Sampler* pImmutableSamplers;
13286 };
13287 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
13288
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013289 struct PipelineShaderStageCreateInfo
13290 {
13291 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
13292 : sType( StructureType::ePipelineShaderStageCreateInfo )
13293 , pNext( nullptr )
13294 , flags( flags_ )
13295 , stage( stage_ )
13296 , module( module_ )
13297 , pName( pName_ )
13298 , pSpecializationInfo( pSpecializationInfo_ )
13299 {
13300 }
13301
13302 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
13303 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013304 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013305 }
13306
13307 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
13308 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013309 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013310 return *this;
13311 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013312 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
13313 {
13314 pNext = pNext_;
13315 return *this;
13316 }
13317
13318 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13319 {
13320 flags = flags_;
13321 return *this;
13322 }
13323
13324 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13325 {
13326 stage = stage_;
13327 return *this;
13328 }
13329
13330 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13331 {
13332 module = module_;
13333 return *this;
13334 }
13335
13336 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13337 {
13338 pName = pName_;
13339 return *this;
13340 }
13341
13342 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13343 {
13344 pSpecializationInfo = pSpecializationInfo_;
13345 return *this;
13346 }
13347
13348 operator const VkPipelineShaderStageCreateInfo&() const
13349 {
13350 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13351 }
13352
13353 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13354 {
13355 return ( sType == rhs.sType )
13356 && ( pNext == rhs.pNext )
13357 && ( flags == rhs.flags )
13358 && ( stage == rhs.stage )
13359 && ( module == rhs.module )
13360 && ( pName == rhs.pName )
13361 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13362 }
13363
13364 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13365 {
13366 return !operator==( rhs );
13367 }
13368
13369 private:
13370 StructureType sType;
13371
13372 public:
13373 const void* pNext;
13374 PipelineShaderStageCreateFlags flags;
13375 ShaderStageFlagBits stage;
13376 ShaderModule module;
13377 const char* pName;
13378 const SpecializationInfo* pSpecializationInfo;
13379 };
13380 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13381
13382 struct PushConstantRange
13383 {
13384 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13385 : stageFlags( stageFlags_ )
13386 , offset( offset_ )
13387 , size( size_ )
13388 {
13389 }
13390
13391 PushConstantRange( VkPushConstantRange const & rhs )
13392 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013393 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013394 }
13395
13396 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013398 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013399 return *this;
13400 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013401 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13402 {
13403 stageFlags = stageFlags_;
13404 return *this;
13405 }
13406
13407 PushConstantRange& setOffset( uint32_t offset_ )
13408 {
13409 offset = offset_;
13410 return *this;
13411 }
13412
13413 PushConstantRange& setSize( uint32_t size_ )
13414 {
13415 size = size_;
13416 return *this;
13417 }
13418
13419 operator const VkPushConstantRange&() const
13420 {
13421 return *reinterpret_cast<const VkPushConstantRange*>(this);
13422 }
13423
13424 bool operator==( PushConstantRange const& rhs ) const
13425 {
13426 return ( stageFlags == rhs.stageFlags )
13427 && ( offset == rhs.offset )
13428 && ( size == rhs.size );
13429 }
13430
13431 bool operator!=( PushConstantRange const& rhs ) const
13432 {
13433 return !operator==( rhs );
13434 }
13435
13436 ShaderStageFlags stageFlags;
13437 uint32_t offset;
13438 uint32_t size;
13439 };
13440 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13441
13442 struct PipelineLayoutCreateInfo
13443 {
13444 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13445 : sType( StructureType::ePipelineLayoutCreateInfo )
13446 , pNext( nullptr )
13447 , flags( flags_ )
13448 , setLayoutCount( setLayoutCount_ )
13449 , pSetLayouts( pSetLayouts_ )
13450 , pushConstantRangeCount( pushConstantRangeCount_ )
13451 , pPushConstantRanges( pPushConstantRanges_ )
13452 {
13453 }
13454
13455 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13456 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013457 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013458 }
13459
13460 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13461 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013462 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013463 return *this;
13464 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013465 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13466 {
13467 pNext = pNext_;
13468 return *this;
13469 }
13470
13471 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13472 {
13473 flags = flags_;
13474 return *this;
13475 }
13476
13477 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13478 {
13479 setLayoutCount = setLayoutCount_;
13480 return *this;
13481 }
13482
13483 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13484 {
13485 pSetLayouts = pSetLayouts_;
13486 return *this;
13487 }
13488
13489 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13490 {
13491 pushConstantRangeCount = pushConstantRangeCount_;
13492 return *this;
13493 }
13494
13495 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13496 {
13497 pPushConstantRanges = pPushConstantRanges_;
13498 return *this;
13499 }
13500
13501 operator const VkPipelineLayoutCreateInfo&() const
13502 {
13503 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13504 }
13505
13506 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13507 {
13508 return ( sType == rhs.sType )
13509 && ( pNext == rhs.pNext )
13510 && ( flags == rhs.flags )
13511 && ( setLayoutCount == rhs.setLayoutCount )
13512 && ( pSetLayouts == rhs.pSetLayouts )
13513 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13514 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13515 }
13516
13517 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13518 {
13519 return !operator==( rhs );
13520 }
13521
13522 private:
13523 StructureType sType;
13524
13525 public:
13526 const void* pNext;
13527 PipelineLayoutCreateFlags flags;
13528 uint32_t setLayoutCount;
13529 const DescriptorSetLayout* pSetLayouts;
13530 uint32_t pushConstantRangeCount;
13531 const PushConstantRange* pPushConstantRanges;
13532 };
13533 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13534
13535 enum class ImageUsageFlagBits
13536 {
13537 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13538 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13539 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13540 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13541 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13542 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13543 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13544 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13545 };
13546
13547 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13548
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013549 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013550 {
13551 return ImageUsageFlags( bit0 ) | bit1;
13552 }
13553
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013554 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13555 {
13556 return ~( ImageUsageFlags( bits ) );
13557 }
13558
13559 template <> struct FlagTraits<ImageUsageFlagBits>
13560 {
13561 enum
13562 {
13563 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)
13564 };
13565 };
13566
Mark Lobodzinski54385432017-05-15 10:27:52 -060013567 struct SharedPresentSurfaceCapabilitiesKHR
13568 {
13569 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
13570 {
13571 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
13572 }
13573
13574 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
13575 {
13576 return ( sType == rhs.sType )
13577 && ( pNext == rhs.pNext )
13578 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
13579 }
13580
13581 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
13582 {
13583 return !operator==( rhs );
13584 }
13585
13586 private:
13587 StructureType sType;
13588
13589 public:
13590 void* pNext;
13591 ImageUsageFlags sharedPresentSupportedUsageFlags;
13592 };
13593 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
13594
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013595 enum class ImageCreateFlagBits
13596 {
13597 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13598 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13599 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13600 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013601 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013602 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013603 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013604 };
13605
13606 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13607
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013608 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013609 {
13610 return ImageCreateFlags( bit0 ) | bit1;
13611 }
13612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013613 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13614 {
13615 return ~( ImageCreateFlags( bits ) );
13616 }
13617
13618 template <> struct FlagTraits<ImageCreateFlagBits>
13619 {
13620 enum
13621 {
Mark Young0f183a82017-02-28 09:58:04 -070013622 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eBindSfrKHX) | VkFlags(ImageCreateFlagBits::e2DArrayCompatibleKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013623 };
13624 };
13625
Mark Young39389872017-01-19 21:10:49 -070013626 struct PhysicalDeviceImageFormatInfo2KHR
13627 {
13628 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13629 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13630 , pNext( nullptr )
13631 , format( format_ )
13632 , type( type_ )
13633 , tiling( tiling_ )
13634 , usage( usage_ )
13635 , flags( flags_ )
13636 {
13637 }
13638
13639 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13640 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013641 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070013642 }
13643
13644 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13645 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013646 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070013647 return *this;
13648 }
Mark Young39389872017-01-19 21:10:49 -070013649 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13650 {
13651 pNext = pNext_;
13652 return *this;
13653 }
13654
13655 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13656 {
13657 format = format_;
13658 return *this;
13659 }
13660
13661 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13662 {
13663 type = type_;
13664 return *this;
13665 }
13666
13667 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13668 {
13669 tiling = tiling_;
13670 return *this;
13671 }
13672
13673 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13674 {
13675 usage = usage_;
13676 return *this;
13677 }
13678
13679 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13680 {
13681 flags = flags_;
13682 return *this;
13683 }
13684
13685 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13686 {
13687 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13688 }
13689
13690 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13691 {
13692 return ( sType == rhs.sType )
13693 && ( pNext == rhs.pNext )
13694 && ( format == rhs.format )
13695 && ( type == rhs.type )
13696 && ( tiling == rhs.tiling )
13697 && ( usage == rhs.usage )
13698 && ( flags == rhs.flags );
13699 }
13700
13701 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13702 {
13703 return !operator==( rhs );
13704 }
13705
13706 private:
13707 StructureType sType;
13708
13709 public:
13710 const void* pNext;
13711 Format format;
13712 ImageType type;
13713 ImageTiling tiling;
13714 ImageUsageFlags usage;
13715 ImageCreateFlags flags;
13716 };
13717 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13718
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013719 enum class PipelineCreateFlagBits
13720 {
13721 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13722 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013723 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13724 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13725 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013726 };
13727
13728 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13729
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013730 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013731 {
13732 return PipelineCreateFlags( bit0 ) | bit1;
13733 }
13734
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013735 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13736 {
13737 return ~( PipelineCreateFlags( bits ) );
13738 }
13739
13740 template <> struct FlagTraits<PipelineCreateFlagBits>
13741 {
13742 enum
13743 {
Mark Young0f183a82017-02-28 09:58:04 -070013744 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013745 };
13746 };
13747
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013748 struct ComputePipelineCreateInfo
13749 {
13750 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13751 : sType( StructureType::eComputePipelineCreateInfo )
13752 , pNext( nullptr )
13753 , flags( flags_ )
13754 , stage( stage_ )
13755 , layout( layout_ )
13756 , basePipelineHandle( basePipelineHandle_ )
13757 , basePipelineIndex( basePipelineIndex_ )
13758 {
13759 }
13760
13761 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13762 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013763 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013764 }
13765
13766 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13767 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013768 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013769 return *this;
13770 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013771 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13772 {
13773 pNext = pNext_;
13774 return *this;
13775 }
13776
13777 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13778 {
13779 flags = flags_;
13780 return *this;
13781 }
13782
13783 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13784 {
13785 stage = stage_;
13786 return *this;
13787 }
13788
13789 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13790 {
13791 layout = layout_;
13792 return *this;
13793 }
13794
13795 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13796 {
13797 basePipelineHandle = basePipelineHandle_;
13798 return *this;
13799 }
13800
13801 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13802 {
13803 basePipelineIndex = basePipelineIndex_;
13804 return *this;
13805 }
13806
13807 operator const VkComputePipelineCreateInfo&() const
13808 {
13809 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13810 }
13811
13812 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13813 {
13814 return ( sType == rhs.sType )
13815 && ( pNext == rhs.pNext )
13816 && ( flags == rhs.flags )
13817 && ( stage == rhs.stage )
13818 && ( layout == rhs.layout )
13819 && ( basePipelineHandle == rhs.basePipelineHandle )
13820 && ( basePipelineIndex == rhs.basePipelineIndex );
13821 }
13822
13823 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13824 {
13825 return !operator==( rhs );
13826 }
13827
13828 private:
13829 StructureType sType;
13830
13831 public:
13832 const void* pNext;
13833 PipelineCreateFlags flags;
13834 PipelineShaderStageCreateInfo stage;
13835 PipelineLayout layout;
13836 Pipeline basePipelineHandle;
13837 int32_t basePipelineIndex;
13838 };
13839 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13840
13841 enum class ColorComponentFlagBits
13842 {
13843 eR = VK_COLOR_COMPONENT_R_BIT,
13844 eG = VK_COLOR_COMPONENT_G_BIT,
13845 eB = VK_COLOR_COMPONENT_B_BIT,
13846 eA = VK_COLOR_COMPONENT_A_BIT
13847 };
13848
13849 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13850
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013851 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013852 {
13853 return ColorComponentFlags( bit0 ) | bit1;
13854 }
13855
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013856 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13857 {
13858 return ~( ColorComponentFlags( bits ) );
13859 }
13860
13861 template <> struct FlagTraits<ColorComponentFlagBits>
13862 {
13863 enum
13864 {
13865 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13866 };
13867 };
13868
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013869 struct PipelineColorBlendAttachmentState
13870 {
13871 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() )
13872 : blendEnable( blendEnable_ )
13873 , srcColorBlendFactor( srcColorBlendFactor_ )
13874 , dstColorBlendFactor( dstColorBlendFactor_ )
13875 , colorBlendOp( colorBlendOp_ )
13876 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13877 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13878 , alphaBlendOp( alphaBlendOp_ )
13879 , colorWriteMask( colorWriteMask_ )
13880 {
13881 }
13882
13883 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13884 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013885 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013886 }
13887
13888 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13889 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013890 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013891 return *this;
13892 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013893 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13894 {
13895 blendEnable = blendEnable_;
13896 return *this;
13897 }
13898
13899 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13900 {
13901 srcColorBlendFactor = srcColorBlendFactor_;
13902 return *this;
13903 }
13904
13905 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13906 {
13907 dstColorBlendFactor = dstColorBlendFactor_;
13908 return *this;
13909 }
13910
13911 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13912 {
13913 colorBlendOp = colorBlendOp_;
13914 return *this;
13915 }
13916
13917 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13918 {
13919 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13920 return *this;
13921 }
13922
13923 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13924 {
13925 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13926 return *this;
13927 }
13928
13929 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13930 {
13931 alphaBlendOp = alphaBlendOp_;
13932 return *this;
13933 }
13934
13935 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13936 {
13937 colorWriteMask = colorWriteMask_;
13938 return *this;
13939 }
13940
13941 operator const VkPipelineColorBlendAttachmentState&() const
13942 {
13943 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13944 }
13945
13946 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13947 {
13948 return ( blendEnable == rhs.blendEnable )
13949 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13950 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13951 && ( colorBlendOp == rhs.colorBlendOp )
13952 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13953 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13954 && ( alphaBlendOp == rhs.alphaBlendOp )
13955 && ( colorWriteMask == rhs.colorWriteMask );
13956 }
13957
13958 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13959 {
13960 return !operator==( rhs );
13961 }
13962
13963 Bool32 blendEnable;
13964 BlendFactor srcColorBlendFactor;
13965 BlendFactor dstColorBlendFactor;
13966 BlendOp colorBlendOp;
13967 BlendFactor srcAlphaBlendFactor;
13968 BlendFactor dstAlphaBlendFactor;
13969 BlendOp alphaBlendOp;
13970 ColorComponentFlags colorWriteMask;
13971 };
13972 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13973
13974 struct PipelineColorBlendStateCreateInfo
13975 {
13976 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 } } )
13977 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13978 , pNext( nullptr )
13979 , flags( flags_ )
13980 , logicOpEnable( logicOpEnable_ )
13981 , logicOp( logicOp_ )
13982 , attachmentCount( attachmentCount_ )
13983 , pAttachments( pAttachments_ )
13984 {
13985 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13986 }
13987
13988 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13989 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013990 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013991 }
13992
13993 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13994 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013995 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013996 return *this;
13997 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013998 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13999 {
14000 pNext = pNext_;
14001 return *this;
14002 }
14003
14004 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
14005 {
14006 flags = flags_;
14007 return *this;
14008 }
14009
14010 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
14011 {
14012 logicOpEnable = logicOpEnable_;
14013 return *this;
14014 }
14015
14016 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
14017 {
14018 logicOp = logicOp_;
14019 return *this;
14020 }
14021
14022 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
14023 {
14024 attachmentCount = attachmentCount_;
14025 return *this;
14026 }
14027
14028 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
14029 {
14030 pAttachments = pAttachments_;
14031 return *this;
14032 }
14033
14034 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
14035 {
14036 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
14037 return *this;
14038 }
14039
14040 operator const VkPipelineColorBlendStateCreateInfo&() const
14041 {
14042 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
14043 }
14044
14045 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
14046 {
14047 return ( sType == rhs.sType )
14048 && ( pNext == rhs.pNext )
14049 && ( flags == rhs.flags )
14050 && ( logicOpEnable == rhs.logicOpEnable )
14051 && ( logicOp == rhs.logicOp )
14052 && ( attachmentCount == rhs.attachmentCount )
14053 && ( pAttachments == rhs.pAttachments )
14054 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
14055 }
14056
14057 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
14058 {
14059 return !operator==( rhs );
14060 }
14061
14062 private:
14063 StructureType sType;
14064
14065 public:
14066 const void* pNext;
14067 PipelineColorBlendStateCreateFlags flags;
14068 Bool32 logicOpEnable;
14069 LogicOp logicOp;
14070 uint32_t attachmentCount;
14071 const PipelineColorBlendAttachmentState* pAttachments;
14072 float blendConstants[4];
14073 };
14074 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
14075
14076 enum class FenceCreateFlagBits
14077 {
14078 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
14079 };
14080
14081 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
14082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014083 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014084 {
14085 return FenceCreateFlags( bit0 ) | bit1;
14086 }
14087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014088 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
14089 {
14090 return ~( FenceCreateFlags( bits ) );
14091 }
14092
14093 template <> struct FlagTraits<FenceCreateFlagBits>
14094 {
14095 enum
14096 {
14097 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
14098 };
14099 };
14100
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014101 struct FenceCreateInfo
14102 {
14103 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
14104 : sType( StructureType::eFenceCreateInfo )
14105 , pNext( nullptr )
14106 , flags( flags_ )
14107 {
14108 }
14109
14110 FenceCreateInfo( VkFenceCreateInfo const & rhs )
14111 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014112 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014113 }
14114
14115 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
14116 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014117 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014118 return *this;
14119 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014120 FenceCreateInfo& setPNext( const void* pNext_ )
14121 {
14122 pNext = pNext_;
14123 return *this;
14124 }
14125
14126 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
14127 {
14128 flags = flags_;
14129 return *this;
14130 }
14131
14132 operator const VkFenceCreateInfo&() const
14133 {
14134 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
14135 }
14136
14137 bool operator==( FenceCreateInfo const& rhs ) const
14138 {
14139 return ( sType == rhs.sType )
14140 && ( pNext == rhs.pNext )
14141 && ( flags == rhs.flags );
14142 }
14143
14144 bool operator!=( FenceCreateInfo const& rhs ) const
14145 {
14146 return !operator==( rhs );
14147 }
14148
14149 private:
14150 StructureType sType;
14151
14152 public:
14153 const void* pNext;
14154 FenceCreateFlags flags;
14155 };
14156 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
14157
14158 enum class FormatFeatureFlagBits
14159 {
14160 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14161 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14162 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14163 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14164 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14165 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14166 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14167 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14168 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14169 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14170 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14171 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14172 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014173 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14174 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
14175 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014176 };
14177
14178 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14179
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014180 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014181 {
14182 return FormatFeatureFlags( bit0 ) | bit1;
14183 }
14184
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014185 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14186 {
14187 return ~( FormatFeatureFlags( bits ) );
14188 }
14189
14190 template <> struct FlagTraits<FormatFeatureFlagBits>
14191 {
14192 enum
14193 {
Mark Young39389872017-01-19 21:10:49 -070014194 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)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014195 };
14196 };
14197
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014198 struct FormatProperties
14199 {
14200 operator const VkFormatProperties&() const
14201 {
14202 return *reinterpret_cast<const VkFormatProperties*>(this);
14203 }
14204
14205 bool operator==( FormatProperties const& rhs ) const
14206 {
14207 return ( linearTilingFeatures == rhs.linearTilingFeatures )
14208 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
14209 && ( bufferFeatures == rhs.bufferFeatures );
14210 }
14211
14212 bool operator!=( FormatProperties const& rhs ) const
14213 {
14214 return !operator==( rhs );
14215 }
14216
14217 FormatFeatureFlags linearTilingFeatures;
14218 FormatFeatureFlags optimalTilingFeatures;
14219 FormatFeatureFlags bufferFeatures;
14220 };
14221 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
14222
Mark Young39389872017-01-19 21:10:49 -070014223 struct FormatProperties2KHR
14224 {
14225 operator const VkFormatProperties2KHR&() const
14226 {
14227 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
14228 }
14229
14230 bool operator==( FormatProperties2KHR const& rhs ) const
14231 {
14232 return ( sType == rhs.sType )
14233 && ( pNext == rhs.pNext )
14234 && ( formatProperties == rhs.formatProperties );
14235 }
14236
14237 bool operator!=( FormatProperties2KHR const& rhs ) const
14238 {
14239 return !operator==( rhs );
14240 }
14241
14242 private:
14243 StructureType sType;
14244
14245 public:
14246 void* pNext;
14247 FormatProperties formatProperties;
14248 };
14249 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
14250
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014251 enum class QueryControlFlagBits
14252 {
14253 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
14254 };
14255
14256 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
14257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014258 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014259 {
14260 return QueryControlFlags( bit0 ) | bit1;
14261 }
14262
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014263 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
14264 {
14265 return ~( QueryControlFlags( bits ) );
14266 }
14267
14268 template <> struct FlagTraits<QueryControlFlagBits>
14269 {
14270 enum
14271 {
14272 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
14273 };
14274 };
14275
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014276 enum class QueryResultFlagBits
14277 {
14278 e64 = VK_QUERY_RESULT_64_BIT,
14279 eWait = VK_QUERY_RESULT_WAIT_BIT,
14280 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
14281 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
14282 };
14283
14284 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
14285
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014286 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014287 {
14288 return QueryResultFlags( bit0 ) | bit1;
14289 }
14290
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014291 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
14292 {
14293 return ~( QueryResultFlags( bits ) );
14294 }
14295
14296 template <> struct FlagTraits<QueryResultFlagBits>
14297 {
14298 enum
14299 {
14300 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
14301 };
14302 };
14303
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014304 enum class CommandBufferUsageFlagBits
14305 {
14306 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
14307 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
14308 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
14309 };
14310
14311 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
14312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014313 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014314 {
14315 return CommandBufferUsageFlags( bit0 ) | bit1;
14316 }
14317
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014318 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
14319 {
14320 return ~( CommandBufferUsageFlags( bits ) );
14321 }
14322
14323 template <> struct FlagTraits<CommandBufferUsageFlagBits>
14324 {
14325 enum
14326 {
14327 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
14328 };
14329 };
14330
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014331 enum class QueryPipelineStatisticFlagBits
14332 {
14333 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
14334 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
14335 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
14336 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
14337 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
14338 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14339 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14340 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14341 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14342 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14343 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14344 };
14345
14346 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014348 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014349 {
14350 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14351 }
14352
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014353 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14354 {
14355 return ~( QueryPipelineStatisticFlags( bits ) );
14356 }
14357
14358 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14359 {
14360 enum
14361 {
14362 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)
14363 };
14364 };
14365
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014366 struct CommandBufferInheritanceInfo
14367 {
14368 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14369 : sType( StructureType::eCommandBufferInheritanceInfo )
14370 , pNext( nullptr )
14371 , renderPass( renderPass_ )
14372 , subpass( subpass_ )
14373 , framebuffer( framebuffer_ )
14374 , occlusionQueryEnable( occlusionQueryEnable_ )
14375 , queryFlags( queryFlags_ )
14376 , pipelineStatistics( pipelineStatistics_ )
14377 {
14378 }
14379
14380 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014382 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014383 }
14384
14385 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14386 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014387 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014388 return *this;
14389 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014390 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14391 {
14392 pNext = pNext_;
14393 return *this;
14394 }
14395
14396 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14397 {
14398 renderPass = renderPass_;
14399 return *this;
14400 }
14401
14402 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14403 {
14404 subpass = subpass_;
14405 return *this;
14406 }
14407
14408 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14409 {
14410 framebuffer = framebuffer_;
14411 return *this;
14412 }
14413
14414 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14415 {
14416 occlusionQueryEnable = occlusionQueryEnable_;
14417 return *this;
14418 }
14419
14420 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14421 {
14422 queryFlags = queryFlags_;
14423 return *this;
14424 }
14425
14426 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14427 {
14428 pipelineStatistics = pipelineStatistics_;
14429 return *this;
14430 }
14431
14432 operator const VkCommandBufferInheritanceInfo&() const
14433 {
14434 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14435 }
14436
14437 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14438 {
14439 return ( sType == rhs.sType )
14440 && ( pNext == rhs.pNext )
14441 && ( renderPass == rhs.renderPass )
14442 && ( subpass == rhs.subpass )
14443 && ( framebuffer == rhs.framebuffer )
14444 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14445 && ( queryFlags == rhs.queryFlags )
14446 && ( pipelineStatistics == rhs.pipelineStatistics );
14447 }
14448
14449 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14450 {
14451 return !operator==( rhs );
14452 }
14453
14454 private:
14455 StructureType sType;
14456
14457 public:
14458 const void* pNext;
14459 RenderPass renderPass;
14460 uint32_t subpass;
14461 Framebuffer framebuffer;
14462 Bool32 occlusionQueryEnable;
14463 QueryControlFlags queryFlags;
14464 QueryPipelineStatisticFlags pipelineStatistics;
14465 };
14466 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14467
14468 struct CommandBufferBeginInfo
14469 {
14470 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14471 : sType( StructureType::eCommandBufferBeginInfo )
14472 , pNext( nullptr )
14473 , flags( flags_ )
14474 , pInheritanceInfo( pInheritanceInfo_ )
14475 {
14476 }
14477
14478 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14479 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014480 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014481 }
14482
14483 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14484 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014485 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014486 return *this;
14487 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014488 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14489 {
14490 pNext = pNext_;
14491 return *this;
14492 }
14493
14494 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14495 {
14496 flags = flags_;
14497 return *this;
14498 }
14499
14500 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14501 {
14502 pInheritanceInfo = pInheritanceInfo_;
14503 return *this;
14504 }
14505
14506 operator const VkCommandBufferBeginInfo&() const
14507 {
14508 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14509 }
14510
14511 bool operator==( CommandBufferBeginInfo const& rhs ) const
14512 {
14513 return ( sType == rhs.sType )
14514 && ( pNext == rhs.pNext )
14515 && ( flags == rhs.flags )
14516 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14517 }
14518
14519 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14520 {
14521 return !operator==( rhs );
14522 }
14523
14524 private:
14525 StructureType sType;
14526
14527 public:
14528 const void* pNext;
14529 CommandBufferUsageFlags flags;
14530 const CommandBufferInheritanceInfo* pInheritanceInfo;
14531 };
14532 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14533
14534 struct QueryPoolCreateInfo
14535 {
14536 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14537 : sType( StructureType::eQueryPoolCreateInfo )
14538 , pNext( nullptr )
14539 , flags( flags_ )
14540 , queryType( queryType_ )
14541 , queryCount( queryCount_ )
14542 , pipelineStatistics( pipelineStatistics_ )
14543 {
14544 }
14545
14546 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14547 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014548 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014549 }
14550
14551 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14552 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014553 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014554 return *this;
14555 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014556 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14557 {
14558 pNext = pNext_;
14559 return *this;
14560 }
14561
14562 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14563 {
14564 flags = flags_;
14565 return *this;
14566 }
14567
14568 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14569 {
14570 queryType = queryType_;
14571 return *this;
14572 }
14573
14574 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14575 {
14576 queryCount = queryCount_;
14577 return *this;
14578 }
14579
14580 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14581 {
14582 pipelineStatistics = pipelineStatistics_;
14583 return *this;
14584 }
14585
14586 operator const VkQueryPoolCreateInfo&() const
14587 {
14588 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14589 }
14590
14591 bool operator==( QueryPoolCreateInfo const& rhs ) const
14592 {
14593 return ( sType == rhs.sType )
14594 && ( pNext == rhs.pNext )
14595 && ( flags == rhs.flags )
14596 && ( queryType == rhs.queryType )
14597 && ( queryCount == rhs.queryCount )
14598 && ( pipelineStatistics == rhs.pipelineStatistics );
14599 }
14600
14601 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14602 {
14603 return !operator==( rhs );
14604 }
14605
14606 private:
14607 StructureType sType;
14608
14609 public:
14610 const void* pNext;
14611 QueryPoolCreateFlags flags;
14612 QueryType queryType;
14613 uint32_t queryCount;
14614 QueryPipelineStatisticFlags pipelineStatistics;
14615 };
14616 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14617
14618 enum class ImageAspectFlagBits
14619 {
14620 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14621 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14622 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14623 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14624 };
14625
14626 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14627
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014628 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014629 {
14630 return ImageAspectFlags( bit0 ) | bit1;
14631 }
14632
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014633 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14634 {
14635 return ~( ImageAspectFlags( bits ) );
14636 }
14637
14638 template <> struct FlagTraits<ImageAspectFlagBits>
14639 {
14640 enum
14641 {
14642 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14643 };
14644 };
14645
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014646 struct ImageSubresource
14647 {
14648 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14649 : aspectMask( aspectMask_ )
14650 , mipLevel( mipLevel_ )
14651 , arrayLayer( arrayLayer_ )
14652 {
14653 }
14654
14655 ImageSubresource( VkImageSubresource const & rhs )
14656 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014657 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014658 }
14659
14660 ImageSubresource& operator=( VkImageSubresource const & rhs )
14661 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014662 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014663 return *this;
14664 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014665 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14666 {
14667 aspectMask = aspectMask_;
14668 return *this;
14669 }
14670
14671 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14672 {
14673 mipLevel = mipLevel_;
14674 return *this;
14675 }
14676
14677 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14678 {
14679 arrayLayer = arrayLayer_;
14680 return *this;
14681 }
14682
14683 operator const VkImageSubresource&() const
14684 {
14685 return *reinterpret_cast<const VkImageSubresource*>(this);
14686 }
14687
14688 bool operator==( ImageSubresource const& rhs ) const
14689 {
14690 return ( aspectMask == rhs.aspectMask )
14691 && ( mipLevel == rhs.mipLevel )
14692 && ( arrayLayer == rhs.arrayLayer );
14693 }
14694
14695 bool operator!=( ImageSubresource const& rhs ) const
14696 {
14697 return !operator==( rhs );
14698 }
14699
14700 ImageAspectFlags aspectMask;
14701 uint32_t mipLevel;
14702 uint32_t arrayLayer;
14703 };
14704 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14705
14706 struct ImageSubresourceLayers
14707 {
14708 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14709 : aspectMask( aspectMask_ )
14710 , mipLevel( mipLevel_ )
14711 , baseArrayLayer( baseArrayLayer_ )
14712 , layerCount( layerCount_ )
14713 {
14714 }
14715
14716 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14717 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014718 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014719 }
14720
14721 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14722 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014723 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014724 return *this;
14725 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014726 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14727 {
14728 aspectMask = aspectMask_;
14729 return *this;
14730 }
14731
14732 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14733 {
14734 mipLevel = mipLevel_;
14735 return *this;
14736 }
14737
14738 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14739 {
14740 baseArrayLayer = baseArrayLayer_;
14741 return *this;
14742 }
14743
14744 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14745 {
14746 layerCount = layerCount_;
14747 return *this;
14748 }
14749
14750 operator const VkImageSubresourceLayers&() const
14751 {
14752 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14753 }
14754
14755 bool operator==( ImageSubresourceLayers const& rhs ) const
14756 {
14757 return ( aspectMask == rhs.aspectMask )
14758 && ( mipLevel == rhs.mipLevel )
14759 && ( baseArrayLayer == rhs.baseArrayLayer )
14760 && ( layerCount == rhs.layerCount );
14761 }
14762
14763 bool operator!=( ImageSubresourceLayers const& rhs ) const
14764 {
14765 return !operator==( rhs );
14766 }
14767
14768 ImageAspectFlags aspectMask;
14769 uint32_t mipLevel;
14770 uint32_t baseArrayLayer;
14771 uint32_t layerCount;
14772 };
14773 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14774
14775 struct ImageSubresourceRange
14776 {
14777 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14778 : aspectMask( aspectMask_ )
14779 , baseMipLevel( baseMipLevel_ )
14780 , levelCount( levelCount_ )
14781 , baseArrayLayer( baseArrayLayer_ )
14782 , layerCount( layerCount_ )
14783 {
14784 }
14785
14786 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14787 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014788 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014789 }
14790
14791 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14792 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014793 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014794 return *this;
14795 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014796 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14797 {
14798 aspectMask = aspectMask_;
14799 return *this;
14800 }
14801
14802 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14803 {
14804 baseMipLevel = baseMipLevel_;
14805 return *this;
14806 }
14807
14808 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14809 {
14810 levelCount = levelCount_;
14811 return *this;
14812 }
14813
14814 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14815 {
14816 baseArrayLayer = baseArrayLayer_;
14817 return *this;
14818 }
14819
14820 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14821 {
14822 layerCount = layerCount_;
14823 return *this;
14824 }
14825
14826 operator const VkImageSubresourceRange&() const
14827 {
14828 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14829 }
14830
14831 bool operator==( ImageSubresourceRange const& rhs ) const
14832 {
14833 return ( aspectMask == rhs.aspectMask )
14834 && ( baseMipLevel == rhs.baseMipLevel )
14835 && ( levelCount == rhs.levelCount )
14836 && ( baseArrayLayer == rhs.baseArrayLayer )
14837 && ( layerCount == rhs.layerCount );
14838 }
14839
14840 bool operator!=( ImageSubresourceRange const& rhs ) const
14841 {
14842 return !operator==( rhs );
14843 }
14844
14845 ImageAspectFlags aspectMask;
14846 uint32_t baseMipLevel;
14847 uint32_t levelCount;
14848 uint32_t baseArrayLayer;
14849 uint32_t layerCount;
14850 };
14851 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14852
14853 struct ImageMemoryBarrier
14854 {
14855 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() )
14856 : sType( StructureType::eImageMemoryBarrier )
14857 , pNext( nullptr )
14858 , srcAccessMask( srcAccessMask_ )
14859 , dstAccessMask( dstAccessMask_ )
14860 , oldLayout( oldLayout_ )
14861 , newLayout( newLayout_ )
14862 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14863 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14864 , image( image_ )
14865 , subresourceRange( subresourceRange_ )
14866 {
14867 }
14868
14869 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14870 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014871 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014872 }
14873
14874 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014876 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014877 return *this;
14878 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014879 ImageMemoryBarrier& setPNext( const void* pNext_ )
14880 {
14881 pNext = pNext_;
14882 return *this;
14883 }
14884
14885 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14886 {
14887 srcAccessMask = srcAccessMask_;
14888 return *this;
14889 }
14890
14891 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14892 {
14893 dstAccessMask = dstAccessMask_;
14894 return *this;
14895 }
14896
14897 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14898 {
14899 oldLayout = oldLayout_;
14900 return *this;
14901 }
14902
14903 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14904 {
14905 newLayout = newLayout_;
14906 return *this;
14907 }
14908
14909 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14910 {
14911 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14912 return *this;
14913 }
14914
14915 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14916 {
14917 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14918 return *this;
14919 }
14920
14921 ImageMemoryBarrier& setImage( Image image_ )
14922 {
14923 image = image_;
14924 return *this;
14925 }
14926
14927 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14928 {
14929 subresourceRange = subresourceRange_;
14930 return *this;
14931 }
14932
14933 operator const VkImageMemoryBarrier&() const
14934 {
14935 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14936 }
14937
14938 bool operator==( ImageMemoryBarrier const& rhs ) const
14939 {
14940 return ( sType == rhs.sType )
14941 && ( pNext == rhs.pNext )
14942 && ( srcAccessMask == rhs.srcAccessMask )
14943 && ( dstAccessMask == rhs.dstAccessMask )
14944 && ( oldLayout == rhs.oldLayout )
14945 && ( newLayout == rhs.newLayout )
14946 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14947 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14948 && ( image == rhs.image )
14949 && ( subresourceRange == rhs.subresourceRange );
14950 }
14951
14952 bool operator!=( ImageMemoryBarrier const& rhs ) const
14953 {
14954 return !operator==( rhs );
14955 }
14956
14957 private:
14958 StructureType sType;
14959
14960 public:
14961 const void* pNext;
14962 AccessFlags srcAccessMask;
14963 AccessFlags dstAccessMask;
14964 ImageLayout oldLayout;
14965 ImageLayout newLayout;
14966 uint32_t srcQueueFamilyIndex;
14967 uint32_t dstQueueFamilyIndex;
14968 Image image;
14969 ImageSubresourceRange subresourceRange;
14970 };
14971 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14972
14973 struct ImageViewCreateInfo
14974 {
14975 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14976 : sType( StructureType::eImageViewCreateInfo )
14977 , pNext( nullptr )
14978 , flags( flags_ )
14979 , image( image_ )
14980 , viewType( viewType_ )
14981 , format( format_ )
14982 , components( components_ )
14983 , subresourceRange( subresourceRange_ )
14984 {
14985 }
14986
14987 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14988 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014989 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014990 }
14991
14992 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14993 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014994 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014995 return *this;
14996 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014997 ImageViewCreateInfo& setPNext( const void* pNext_ )
14998 {
14999 pNext = pNext_;
15000 return *this;
15001 }
15002
15003 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
15004 {
15005 flags = flags_;
15006 return *this;
15007 }
15008
15009 ImageViewCreateInfo& setImage( Image image_ )
15010 {
15011 image = image_;
15012 return *this;
15013 }
15014
15015 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
15016 {
15017 viewType = viewType_;
15018 return *this;
15019 }
15020
15021 ImageViewCreateInfo& setFormat( Format format_ )
15022 {
15023 format = format_;
15024 return *this;
15025 }
15026
15027 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
15028 {
15029 components = components_;
15030 return *this;
15031 }
15032
15033 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
15034 {
15035 subresourceRange = subresourceRange_;
15036 return *this;
15037 }
15038
15039 operator const VkImageViewCreateInfo&() const
15040 {
15041 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
15042 }
15043
15044 bool operator==( ImageViewCreateInfo const& rhs ) const
15045 {
15046 return ( sType == rhs.sType )
15047 && ( pNext == rhs.pNext )
15048 && ( flags == rhs.flags )
15049 && ( image == rhs.image )
15050 && ( viewType == rhs.viewType )
15051 && ( format == rhs.format )
15052 && ( components == rhs.components )
15053 && ( subresourceRange == rhs.subresourceRange );
15054 }
15055
15056 bool operator!=( ImageViewCreateInfo const& rhs ) const
15057 {
15058 return !operator==( rhs );
15059 }
15060
15061 private:
15062 StructureType sType;
15063
15064 public:
15065 const void* pNext;
15066 ImageViewCreateFlags flags;
15067 Image image;
15068 ImageViewType viewType;
15069 Format format;
15070 ComponentMapping components;
15071 ImageSubresourceRange subresourceRange;
15072 };
15073 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
15074
15075 struct ImageCopy
15076 {
15077 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15078 : srcSubresource( srcSubresource_ )
15079 , srcOffset( srcOffset_ )
15080 , dstSubresource( dstSubresource_ )
15081 , dstOffset( dstOffset_ )
15082 , extent( extent_ )
15083 {
15084 }
15085
15086 ImageCopy( VkImageCopy const & rhs )
15087 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015088 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015089 }
15090
15091 ImageCopy& operator=( VkImageCopy const & rhs )
15092 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015093 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015094 return *this;
15095 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015096 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15097 {
15098 srcSubresource = srcSubresource_;
15099 return *this;
15100 }
15101
15102 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
15103 {
15104 srcOffset = srcOffset_;
15105 return *this;
15106 }
15107
15108 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15109 {
15110 dstSubresource = dstSubresource_;
15111 return *this;
15112 }
15113
15114 ImageCopy& setDstOffset( Offset3D dstOffset_ )
15115 {
15116 dstOffset = dstOffset_;
15117 return *this;
15118 }
15119
15120 ImageCopy& setExtent( Extent3D extent_ )
15121 {
15122 extent = extent_;
15123 return *this;
15124 }
15125
15126 operator const VkImageCopy&() const
15127 {
15128 return *reinterpret_cast<const VkImageCopy*>(this);
15129 }
15130
15131 bool operator==( ImageCopy const& rhs ) const
15132 {
15133 return ( srcSubresource == rhs.srcSubresource )
15134 && ( srcOffset == rhs.srcOffset )
15135 && ( dstSubresource == rhs.dstSubresource )
15136 && ( dstOffset == rhs.dstOffset )
15137 && ( extent == rhs.extent );
15138 }
15139
15140 bool operator!=( ImageCopy const& rhs ) const
15141 {
15142 return !operator==( rhs );
15143 }
15144
15145 ImageSubresourceLayers srcSubresource;
15146 Offset3D srcOffset;
15147 ImageSubresourceLayers dstSubresource;
15148 Offset3D dstOffset;
15149 Extent3D extent;
15150 };
15151 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15152
15153 struct ImageBlit
15154 {
15155 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15156 : srcSubresource( srcSubresource_ )
15157 , dstSubresource( dstSubresource_ )
15158 {
15159 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15160 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15161 }
15162
15163 ImageBlit( VkImageBlit const & rhs )
15164 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015165 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015166 }
15167
15168 ImageBlit& operator=( VkImageBlit const & rhs )
15169 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015170 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015171 return *this;
15172 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015173 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15174 {
15175 srcSubresource = srcSubresource_;
15176 return *this;
15177 }
15178
15179 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15180 {
15181 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15182 return *this;
15183 }
15184
15185 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15186 {
15187 dstSubresource = dstSubresource_;
15188 return *this;
15189 }
15190
15191 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15192 {
15193 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15194 return *this;
15195 }
15196
15197 operator const VkImageBlit&() const
15198 {
15199 return *reinterpret_cast<const VkImageBlit*>(this);
15200 }
15201
15202 bool operator==( ImageBlit const& rhs ) const
15203 {
15204 return ( srcSubresource == rhs.srcSubresource )
15205 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
15206 && ( dstSubresource == rhs.dstSubresource )
15207 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
15208 }
15209
15210 bool operator!=( ImageBlit const& rhs ) const
15211 {
15212 return !operator==( rhs );
15213 }
15214
15215 ImageSubresourceLayers srcSubresource;
15216 Offset3D srcOffsets[2];
15217 ImageSubresourceLayers dstSubresource;
15218 Offset3D dstOffsets[2];
15219 };
15220 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
15221
15222 struct BufferImageCopy
15223 {
15224 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
15225 : bufferOffset( bufferOffset_ )
15226 , bufferRowLength( bufferRowLength_ )
15227 , bufferImageHeight( bufferImageHeight_ )
15228 , imageSubresource( imageSubresource_ )
15229 , imageOffset( imageOffset_ )
15230 , imageExtent( imageExtent_ )
15231 {
15232 }
15233
15234 BufferImageCopy( VkBufferImageCopy const & rhs )
15235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015236 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015237 }
15238
15239 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
15240 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015241 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015242 return *this;
15243 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015244 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
15245 {
15246 bufferOffset = bufferOffset_;
15247 return *this;
15248 }
15249
15250 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
15251 {
15252 bufferRowLength = bufferRowLength_;
15253 return *this;
15254 }
15255
15256 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
15257 {
15258 bufferImageHeight = bufferImageHeight_;
15259 return *this;
15260 }
15261
15262 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
15263 {
15264 imageSubresource = imageSubresource_;
15265 return *this;
15266 }
15267
15268 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
15269 {
15270 imageOffset = imageOffset_;
15271 return *this;
15272 }
15273
15274 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
15275 {
15276 imageExtent = imageExtent_;
15277 return *this;
15278 }
15279
15280 operator const VkBufferImageCopy&() const
15281 {
15282 return *reinterpret_cast<const VkBufferImageCopy*>(this);
15283 }
15284
15285 bool operator==( BufferImageCopy const& rhs ) const
15286 {
15287 return ( bufferOffset == rhs.bufferOffset )
15288 && ( bufferRowLength == rhs.bufferRowLength )
15289 && ( bufferImageHeight == rhs.bufferImageHeight )
15290 && ( imageSubresource == rhs.imageSubresource )
15291 && ( imageOffset == rhs.imageOffset )
15292 && ( imageExtent == rhs.imageExtent );
15293 }
15294
15295 bool operator!=( BufferImageCopy const& rhs ) const
15296 {
15297 return !operator==( rhs );
15298 }
15299
15300 DeviceSize bufferOffset;
15301 uint32_t bufferRowLength;
15302 uint32_t bufferImageHeight;
15303 ImageSubresourceLayers imageSubresource;
15304 Offset3D imageOffset;
15305 Extent3D imageExtent;
15306 };
15307 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
15308
15309 struct ImageResolve
15310 {
15311 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15312 : srcSubresource( srcSubresource_ )
15313 , srcOffset( srcOffset_ )
15314 , dstSubresource( dstSubresource_ )
15315 , dstOffset( dstOffset_ )
15316 , extent( extent_ )
15317 {
15318 }
15319
15320 ImageResolve( VkImageResolve const & rhs )
15321 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015322 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015323 }
15324
15325 ImageResolve& operator=( VkImageResolve const & rhs )
15326 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015327 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015328 return *this;
15329 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015330 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15331 {
15332 srcSubresource = srcSubresource_;
15333 return *this;
15334 }
15335
15336 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15337 {
15338 srcOffset = srcOffset_;
15339 return *this;
15340 }
15341
15342 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15343 {
15344 dstSubresource = dstSubresource_;
15345 return *this;
15346 }
15347
15348 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15349 {
15350 dstOffset = dstOffset_;
15351 return *this;
15352 }
15353
15354 ImageResolve& setExtent( Extent3D extent_ )
15355 {
15356 extent = extent_;
15357 return *this;
15358 }
15359
15360 operator const VkImageResolve&() const
15361 {
15362 return *reinterpret_cast<const VkImageResolve*>(this);
15363 }
15364
15365 bool operator==( ImageResolve const& rhs ) const
15366 {
15367 return ( srcSubresource == rhs.srcSubresource )
15368 && ( srcOffset == rhs.srcOffset )
15369 && ( dstSubresource == rhs.dstSubresource )
15370 && ( dstOffset == rhs.dstOffset )
15371 && ( extent == rhs.extent );
15372 }
15373
15374 bool operator!=( ImageResolve const& rhs ) const
15375 {
15376 return !operator==( rhs );
15377 }
15378
15379 ImageSubresourceLayers srcSubresource;
15380 Offset3D srcOffset;
15381 ImageSubresourceLayers dstSubresource;
15382 Offset3D dstOffset;
15383 Extent3D extent;
15384 };
15385 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15386
15387 struct ClearAttachment
15388 {
15389 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15390 : aspectMask( aspectMask_ )
15391 , colorAttachment( colorAttachment_ )
15392 , clearValue( clearValue_ )
15393 {
15394 }
15395
15396 ClearAttachment( VkClearAttachment const & rhs )
15397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015398 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015399 }
15400
15401 ClearAttachment& operator=( VkClearAttachment const & rhs )
15402 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015403 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015404 return *this;
15405 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015406 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15407 {
15408 aspectMask = aspectMask_;
15409 return *this;
15410 }
15411
15412 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15413 {
15414 colorAttachment = colorAttachment_;
15415 return *this;
15416 }
15417
15418 ClearAttachment& setClearValue( ClearValue clearValue_ )
15419 {
15420 clearValue = clearValue_;
15421 return *this;
15422 }
15423
15424 operator const VkClearAttachment&() const
15425 {
15426 return *reinterpret_cast<const VkClearAttachment*>(this);
15427 }
15428
15429 ImageAspectFlags aspectMask;
15430 uint32_t colorAttachment;
15431 ClearValue clearValue;
15432 };
15433 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15434
15435 enum class SparseImageFormatFlagBits
15436 {
15437 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15438 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15439 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15440 };
15441
15442 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15443
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015444 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015445 {
15446 return SparseImageFormatFlags( bit0 ) | bit1;
15447 }
15448
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015449 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15450 {
15451 return ~( SparseImageFormatFlags( bits ) );
15452 }
15453
15454 template <> struct FlagTraits<SparseImageFormatFlagBits>
15455 {
15456 enum
15457 {
15458 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15459 };
15460 };
15461
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015462 struct SparseImageFormatProperties
15463 {
15464 operator const VkSparseImageFormatProperties&() const
15465 {
15466 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15467 }
15468
15469 bool operator==( SparseImageFormatProperties const& rhs ) const
15470 {
15471 return ( aspectMask == rhs.aspectMask )
15472 && ( imageGranularity == rhs.imageGranularity )
15473 && ( flags == rhs.flags );
15474 }
15475
15476 bool operator!=( SparseImageFormatProperties const& rhs ) const
15477 {
15478 return !operator==( rhs );
15479 }
15480
15481 ImageAspectFlags aspectMask;
15482 Extent3D imageGranularity;
15483 SparseImageFormatFlags flags;
15484 };
15485 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15486
15487 struct SparseImageMemoryRequirements
15488 {
15489 operator const VkSparseImageMemoryRequirements&() const
15490 {
15491 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15492 }
15493
15494 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15495 {
15496 return ( formatProperties == rhs.formatProperties )
15497 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15498 && ( imageMipTailSize == rhs.imageMipTailSize )
15499 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15500 && ( imageMipTailStride == rhs.imageMipTailStride );
15501 }
15502
15503 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15504 {
15505 return !operator==( rhs );
15506 }
15507
15508 SparseImageFormatProperties formatProperties;
15509 uint32_t imageMipTailFirstLod;
15510 DeviceSize imageMipTailSize;
15511 DeviceSize imageMipTailOffset;
15512 DeviceSize imageMipTailStride;
15513 };
15514 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15515
Mark Young39389872017-01-19 21:10:49 -070015516 struct SparseImageFormatProperties2KHR
15517 {
15518 operator const VkSparseImageFormatProperties2KHR&() const
15519 {
15520 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15521 }
15522
15523 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15524 {
15525 return ( sType == rhs.sType )
15526 && ( pNext == rhs.pNext )
15527 && ( properties == rhs.properties );
15528 }
15529
15530 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15531 {
15532 return !operator==( rhs );
15533 }
15534
15535 private:
15536 StructureType sType;
15537
15538 public:
15539 void* pNext;
15540 SparseImageFormatProperties properties;
15541 };
15542 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15543
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015544 enum class SparseMemoryBindFlagBits
15545 {
15546 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15547 };
15548
15549 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15550
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015551 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015552 {
15553 return SparseMemoryBindFlags( bit0 ) | bit1;
15554 }
15555
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015556 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15557 {
15558 return ~( SparseMemoryBindFlags( bits ) );
15559 }
15560
15561 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15562 {
15563 enum
15564 {
15565 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15566 };
15567 };
15568
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015569 struct SparseMemoryBind
15570 {
15571 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15572 : resourceOffset( resourceOffset_ )
15573 , size( size_ )
15574 , memory( memory_ )
15575 , memoryOffset( memoryOffset_ )
15576 , flags( flags_ )
15577 {
15578 }
15579
15580 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15581 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015582 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015583 }
15584
15585 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15586 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015587 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015588 return *this;
15589 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015590 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15591 {
15592 resourceOffset = resourceOffset_;
15593 return *this;
15594 }
15595
15596 SparseMemoryBind& setSize( DeviceSize size_ )
15597 {
15598 size = size_;
15599 return *this;
15600 }
15601
15602 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15603 {
15604 memory = memory_;
15605 return *this;
15606 }
15607
15608 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15609 {
15610 memoryOffset = memoryOffset_;
15611 return *this;
15612 }
15613
15614 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15615 {
15616 flags = flags_;
15617 return *this;
15618 }
15619
15620 operator const VkSparseMemoryBind&() const
15621 {
15622 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15623 }
15624
15625 bool operator==( SparseMemoryBind const& rhs ) const
15626 {
15627 return ( resourceOffset == rhs.resourceOffset )
15628 && ( size == rhs.size )
15629 && ( memory == rhs.memory )
15630 && ( memoryOffset == rhs.memoryOffset )
15631 && ( flags == rhs.flags );
15632 }
15633
15634 bool operator!=( SparseMemoryBind const& rhs ) const
15635 {
15636 return !operator==( rhs );
15637 }
15638
15639 DeviceSize resourceOffset;
15640 DeviceSize size;
15641 DeviceMemory memory;
15642 DeviceSize memoryOffset;
15643 SparseMemoryBindFlags flags;
15644 };
15645 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15646
15647 struct SparseImageMemoryBind
15648 {
15649 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15650 : subresource( subresource_ )
15651 , offset( offset_ )
15652 , extent( extent_ )
15653 , memory( memory_ )
15654 , memoryOffset( memoryOffset_ )
15655 , flags( flags_ )
15656 {
15657 }
15658
15659 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015661 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015662 }
15663
15664 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15665 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015666 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015667 return *this;
15668 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015669 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15670 {
15671 subresource = subresource_;
15672 return *this;
15673 }
15674
15675 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15676 {
15677 offset = offset_;
15678 return *this;
15679 }
15680
15681 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15682 {
15683 extent = extent_;
15684 return *this;
15685 }
15686
15687 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15688 {
15689 memory = memory_;
15690 return *this;
15691 }
15692
15693 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15694 {
15695 memoryOffset = memoryOffset_;
15696 return *this;
15697 }
15698
15699 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15700 {
15701 flags = flags_;
15702 return *this;
15703 }
15704
15705 operator const VkSparseImageMemoryBind&() const
15706 {
15707 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15708 }
15709
15710 bool operator==( SparseImageMemoryBind const& rhs ) const
15711 {
15712 return ( subresource == rhs.subresource )
15713 && ( offset == rhs.offset )
15714 && ( extent == rhs.extent )
15715 && ( memory == rhs.memory )
15716 && ( memoryOffset == rhs.memoryOffset )
15717 && ( flags == rhs.flags );
15718 }
15719
15720 bool operator!=( SparseImageMemoryBind const& rhs ) const
15721 {
15722 return !operator==( rhs );
15723 }
15724
15725 ImageSubresource subresource;
15726 Offset3D offset;
15727 Extent3D extent;
15728 DeviceMemory memory;
15729 DeviceSize memoryOffset;
15730 SparseMemoryBindFlags flags;
15731 };
15732 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15733
15734 struct SparseBufferMemoryBindInfo
15735 {
15736 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15737 : buffer( buffer_ )
15738 , bindCount( bindCount_ )
15739 , pBinds( pBinds_ )
15740 {
15741 }
15742
15743 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015745 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015746 }
15747
15748 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015750 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015751 return *this;
15752 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015753 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15754 {
15755 buffer = buffer_;
15756 return *this;
15757 }
15758
15759 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15760 {
15761 bindCount = bindCount_;
15762 return *this;
15763 }
15764
15765 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15766 {
15767 pBinds = pBinds_;
15768 return *this;
15769 }
15770
15771 operator const VkSparseBufferMemoryBindInfo&() const
15772 {
15773 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15774 }
15775
15776 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15777 {
15778 return ( buffer == rhs.buffer )
15779 && ( bindCount == rhs.bindCount )
15780 && ( pBinds == rhs.pBinds );
15781 }
15782
15783 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15784 {
15785 return !operator==( rhs );
15786 }
15787
15788 Buffer buffer;
15789 uint32_t bindCount;
15790 const SparseMemoryBind* pBinds;
15791 };
15792 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15793
15794 struct SparseImageOpaqueMemoryBindInfo
15795 {
15796 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15797 : image( image_ )
15798 , bindCount( bindCount_ )
15799 , pBinds( pBinds_ )
15800 {
15801 }
15802
15803 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15804 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015805 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015806 }
15807
15808 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15809 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015810 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015811 return *this;
15812 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015813 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15814 {
15815 image = image_;
15816 return *this;
15817 }
15818
15819 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15820 {
15821 bindCount = bindCount_;
15822 return *this;
15823 }
15824
15825 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15826 {
15827 pBinds = pBinds_;
15828 return *this;
15829 }
15830
15831 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15832 {
15833 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15834 }
15835
15836 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15837 {
15838 return ( image == rhs.image )
15839 && ( bindCount == rhs.bindCount )
15840 && ( pBinds == rhs.pBinds );
15841 }
15842
15843 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15844 {
15845 return !operator==( rhs );
15846 }
15847
15848 Image image;
15849 uint32_t bindCount;
15850 const SparseMemoryBind* pBinds;
15851 };
15852 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15853
15854 struct SparseImageMemoryBindInfo
15855 {
15856 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15857 : image( image_ )
15858 , bindCount( bindCount_ )
15859 , pBinds( pBinds_ )
15860 {
15861 }
15862
15863 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015865 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015866 }
15867
15868 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015870 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015871 return *this;
15872 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015873 SparseImageMemoryBindInfo& setImage( Image image_ )
15874 {
15875 image = image_;
15876 return *this;
15877 }
15878
15879 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15880 {
15881 bindCount = bindCount_;
15882 return *this;
15883 }
15884
15885 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15886 {
15887 pBinds = pBinds_;
15888 return *this;
15889 }
15890
15891 operator const VkSparseImageMemoryBindInfo&() const
15892 {
15893 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15894 }
15895
15896 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15897 {
15898 return ( image == rhs.image )
15899 && ( bindCount == rhs.bindCount )
15900 && ( pBinds == rhs.pBinds );
15901 }
15902
15903 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15904 {
15905 return !operator==( rhs );
15906 }
15907
15908 Image image;
15909 uint32_t bindCount;
15910 const SparseImageMemoryBind* pBinds;
15911 };
15912 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15913
15914 struct BindSparseInfo
15915 {
15916 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 )
15917 : sType( StructureType::eBindSparseInfo )
15918 , pNext( nullptr )
15919 , waitSemaphoreCount( waitSemaphoreCount_ )
15920 , pWaitSemaphores( pWaitSemaphores_ )
15921 , bufferBindCount( bufferBindCount_ )
15922 , pBufferBinds( pBufferBinds_ )
15923 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15924 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15925 , imageBindCount( imageBindCount_ )
15926 , pImageBinds( pImageBinds_ )
15927 , signalSemaphoreCount( signalSemaphoreCount_ )
15928 , pSignalSemaphores( pSignalSemaphores_ )
15929 {
15930 }
15931
15932 BindSparseInfo( VkBindSparseInfo const & rhs )
15933 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015934 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015935 }
15936
15937 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15938 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015939 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015940 return *this;
15941 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015942 BindSparseInfo& setPNext( const void* pNext_ )
15943 {
15944 pNext = pNext_;
15945 return *this;
15946 }
15947
15948 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15949 {
15950 waitSemaphoreCount = waitSemaphoreCount_;
15951 return *this;
15952 }
15953
15954 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15955 {
15956 pWaitSemaphores = pWaitSemaphores_;
15957 return *this;
15958 }
15959
15960 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15961 {
15962 bufferBindCount = bufferBindCount_;
15963 return *this;
15964 }
15965
15966 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15967 {
15968 pBufferBinds = pBufferBinds_;
15969 return *this;
15970 }
15971
15972 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15973 {
15974 imageOpaqueBindCount = imageOpaqueBindCount_;
15975 return *this;
15976 }
15977
15978 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15979 {
15980 pImageOpaqueBinds = pImageOpaqueBinds_;
15981 return *this;
15982 }
15983
15984 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15985 {
15986 imageBindCount = imageBindCount_;
15987 return *this;
15988 }
15989
15990 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15991 {
15992 pImageBinds = pImageBinds_;
15993 return *this;
15994 }
15995
15996 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15997 {
15998 signalSemaphoreCount = signalSemaphoreCount_;
15999 return *this;
16000 }
16001
16002 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
16003 {
16004 pSignalSemaphores = pSignalSemaphores_;
16005 return *this;
16006 }
16007
16008 operator const VkBindSparseInfo&() const
16009 {
16010 return *reinterpret_cast<const VkBindSparseInfo*>(this);
16011 }
16012
16013 bool operator==( BindSparseInfo const& rhs ) const
16014 {
16015 return ( sType == rhs.sType )
16016 && ( pNext == rhs.pNext )
16017 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
16018 && ( pWaitSemaphores == rhs.pWaitSemaphores )
16019 && ( bufferBindCount == rhs.bufferBindCount )
16020 && ( pBufferBinds == rhs.pBufferBinds )
16021 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
16022 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
16023 && ( imageBindCount == rhs.imageBindCount )
16024 && ( pImageBinds == rhs.pImageBinds )
16025 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
16026 && ( pSignalSemaphores == rhs.pSignalSemaphores );
16027 }
16028
16029 bool operator!=( BindSparseInfo const& rhs ) const
16030 {
16031 return !operator==( rhs );
16032 }
16033
16034 private:
16035 StructureType sType;
16036
16037 public:
16038 const void* pNext;
16039 uint32_t waitSemaphoreCount;
16040 const Semaphore* pWaitSemaphores;
16041 uint32_t bufferBindCount;
16042 const SparseBufferMemoryBindInfo* pBufferBinds;
16043 uint32_t imageOpaqueBindCount;
16044 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
16045 uint32_t imageBindCount;
16046 const SparseImageMemoryBindInfo* pImageBinds;
16047 uint32_t signalSemaphoreCount;
16048 const Semaphore* pSignalSemaphores;
16049 };
16050 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
16051
16052 enum class PipelineStageFlagBits
16053 {
16054 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
16055 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
16056 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
16057 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
16058 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
16059 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
16060 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
16061 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
16062 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
16063 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
16064 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
16065 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
16066 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
16067 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
16068 eHost = VK_PIPELINE_STAGE_HOST_BIT,
16069 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016070 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
16071 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016072 };
16073
16074 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
16075
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016076 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016077 {
16078 return PipelineStageFlags( bit0 ) | bit1;
16079 }
16080
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016081 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
16082 {
16083 return ~( PipelineStageFlags( bits ) );
16084 }
16085
16086 template <> struct FlagTraits<PipelineStageFlagBits>
16087 {
16088 enum
16089 {
16090 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)
16091 };
16092 };
16093
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016094 enum class CommandPoolCreateFlagBits
16095 {
16096 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
16097 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
16098 };
16099
16100 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
16101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016102 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016103 {
16104 return CommandPoolCreateFlags( bit0 ) | bit1;
16105 }
16106
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016107 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
16108 {
16109 return ~( CommandPoolCreateFlags( bits ) );
16110 }
16111
16112 template <> struct FlagTraits<CommandPoolCreateFlagBits>
16113 {
16114 enum
16115 {
16116 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
16117 };
16118 };
16119
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016120 struct CommandPoolCreateInfo
16121 {
16122 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
16123 : sType( StructureType::eCommandPoolCreateInfo )
16124 , pNext( nullptr )
16125 , flags( flags_ )
16126 , queueFamilyIndex( queueFamilyIndex_ )
16127 {
16128 }
16129
16130 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
16131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016132 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016133 }
16134
16135 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
16136 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016137 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016138 return *this;
16139 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016140 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16141 {
16142 pNext = pNext_;
16143 return *this;
16144 }
16145
16146 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16147 {
16148 flags = flags_;
16149 return *this;
16150 }
16151
16152 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16153 {
16154 queueFamilyIndex = queueFamilyIndex_;
16155 return *this;
16156 }
16157
16158 operator const VkCommandPoolCreateInfo&() const
16159 {
16160 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16161 }
16162
16163 bool operator==( CommandPoolCreateInfo const& rhs ) const
16164 {
16165 return ( sType == rhs.sType )
16166 && ( pNext == rhs.pNext )
16167 && ( flags == rhs.flags )
16168 && ( queueFamilyIndex == rhs.queueFamilyIndex );
16169 }
16170
16171 bool operator!=( CommandPoolCreateInfo const& rhs ) const
16172 {
16173 return !operator==( rhs );
16174 }
16175
16176 private:
16177 StructureType sType;
16178
16179 public:
16180 const void* pNext;
16181 CommandPoolCreateFlags flags;
16182 uint32_t queueFamilyIndex;
16183 };
16184 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
16185
16186 enum class CommandPoolResetFlagBits
16187 {
16188 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
16189 };
16190
16191 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
16192
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016193 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016194 {
16195 return CommandPoolResetFlags( bit0 ) | bit1;
16196 }
16197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016198 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
16199 {
16200 return ~( CommandPoolResetFlags( bits ) );
16201 }
16202
16203 template <> struct FlagTraits<CommandPoolResetFlagBits>
16204 {
16205 enum
16206 {
16207 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
16208 };
16209 };
16210
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016211 enum class CommandBufferResetFlagBits
16212 {
16213 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
16214 };
16215
16216 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
16217
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016218 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016219 {
16220 return CommandBufferResetFlags( bit0 ) | bit1;
16221 }
16222
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016223 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
16224 {
16225 return ~( CommandBufferResetFlags( bits ) );
16226 }
16227
16228 template <> struct FlagTraits<CommandBufferResetFlagBits>
16229 {
16230 enum
16231 {
16232 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
16233 };
16234 };
16235
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016236 enum class SampleCountFlagBits
16237 {
16238 e1 = VK_SAMPLE_COUNT_1_BIT,
16239 e2 = VK_SAMPLE_COUNT_2_BIT,
16240 e4 = VK_SAMPLE_COUNT_4_BIT,
16241 e8 = VK_SAMPLE_COUNT_8_BIT,
16242 e16 = VK_SAMPLE_COUNT_16_BIT,
16243 e32 = VK_SAMPLE_COUNT_32_BIT,
16244 e64 = VK_SAMPLE_COUNT_64_BIT
16245 };
16246
16247 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
16248
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016249 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016250 {
16251 return SampleCountFlags( bit0 ) | bit1;
16252 }
16253
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016254 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
16255 {
16256 return ~( SampleCountFlags( bits ) );
16257 }
16258
16259 template <> struct FlagTraits<SampleCountFlagBits>
16260 {
16261 enum
16262 {
16263 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
16264 };
16265 };
16266
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016267 struct ImageFormatProperties
16268 {
16269 operator const VkImageFormatProperties&() const
16270 {
16271 return *reinterpret_cast<const VkImageFormatProperties*>(this);
16272 }
16273
16274 bool operator==( ImageFormatProperties const& rhs ) const
16275 {
16276 return ( maxExtent == rhs.maxExtent )
16277 && ( maxMipLevels == rhs.maxMipLevels )
16278 && ( maxArrayLayers == rhs.maxArrayLayers )
16279 && ( sampleCounts == rhs.sampleCounts )
16280 && ( maxResourceSize == rhs.maxResourceSize );
16281 }
16282
16283 bool operator!=( ImageFormatProperties const& rhs ) const
16284 {
16285 return !operator==( rhs );
16286 }
16287
16288 Extent3D maxExtent;
16289 uint32_t maxMipLevels;
16290 uint32_t maxArrayLayers;
16291 SampleCountFlags sampleCounts;
16292 DeviceSize maxResourceSize;
16293 };
16294 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
16295
16296 struct ImageCreateInfo
16297 {
16298 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 )
16299 : sType( StructureType::eImageCreateInfo )
16300 , pNext( nullptr )
16301 , flags( flags_ )
16302 , imageType( imageType_ )
16303 , format( format_ )
16304 , extent( extent_ )
16305 , mipLevels( mipLevels_ )
16306 , arrayLayers( arrayLayers_ )
16307 , samples( samples_ )
16308 , tiling( tiling_ )
16309 , usage( usage_ )
16310 , sharingMode( sharingMode_ )
16311 , queueFamilyIndexCount( queueFamilyIndexCount_ )
16312 , pQueueFamilyIndices( pQueueFamilyIndices_ )
16313 , initialLayout( initialLayout_ )
16314 {
16315 }
16316
16317 ImageCreateInfo( VkImageCreateInfo const & rhs )
16318 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016319 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016320 }
16321
16322 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16323 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016324 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016325 return *this;
16326 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016327 ImageCreateInfo& setPNext( const void* pNext_ )
16328 {
16329 pNext = pNext_;
16330 return *this;
16331 }
16332
16333 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16334 {
16335 flags = flags_;
16336 return *this;
16337 }
16338
16339 ImageCreateInfo& setImageType( ImageType imageType_ )
16340 {
16341 imageType = imageType_;
16342 return *this;
16343 }
16344
16345 ImageCreateInfo& setFormat( Format format_ )
16346 {
16347 format = format_;
16348 return *this;
16349 }
16350
16351 ImageCreateInfo& setExtent( Extent3D extent_ )
16352 {
16353 extent = extent_;
16354 return *this;
16355 }
16356
16357 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16358 {
16359 mipLevels = mipLevels_;
16360 return *this;
16361 }
16362
16363 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16364 {
16365 arrayLayers = arrayLayers_;
16366 return *this;
16367 }
16368
16369 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16370 {
16371 samples = samples_;
16372 return *this;
16373 }
16374
16375 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16376 {
16377 tiling = tiling_;
16378 return *this;
16379 }
16380
16381 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16382 {
16383 usage = usage_;
16384 return *this;
16385 }
16386
16387 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16388 {
16389 sharingMode = sharingMode_;
16390 return *this;
16391 }
16392
16393 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16394 {
16395 queueFamilyIndexCount = queueFamilyIndexCount_;
16396 return *this;
16397 }
16398
16399 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16400 {
16401 pQueueFamilyIndices = pQueueFamilyIndices_;
16402 return *this;
16403 }
16404
16405 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16406 {
16407 initialLayout = initialLayout_;
16408 return *this;
16409 }
16410
16411 operator const VkImageCreateInfo&() const
16412 {
16413 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16414 }
16415
16416 bool operator==( ImageCreateInfo const& rhs ) const
16417 {
16418 return ( sType == rhs.sType )
16419 && ( pNext == rhs.pNext )
16420 && ( flags == rhs.flags )
16421 && ( imageType == rhs.imageType )
16422 && ( format == rhs.format )
16423 && ( extent == rhs.extent )
16424 && ( mipLevels == rhs.mipLevels )
16425 && ( arrayLayers == rhs.arrayLayers )
16426 && ( samples == rhs.samples )
16427 && ( tiling == rhs.tiling )
16428 && ( usage == rhs.usage )
16429 && ( sharingMode == rhs.sharingMode )
16430 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16431 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16432 && ( initialLayout == rhs.initialLayout );
16433 }
16434
16435 bool operator!=( ImageCreateInfo const& rhs ) const
16436 {
16437 return !operator==( rhs );
16438 }
16439
16440 private:
16441 StructureType sType;
16442
16443 public:
16444 const void* pNext;
16445 ImageCreateFlags flags;
16446 ImageType imageType;
16447 Format format;
16448 Extent3D extent;
16449 uint32_t mipLevels;
16450 uint32_t arrayLayers;
16451 SampleCountFlagBits samples;
16452 ImageTiling tiling;
16453 ImageUsageFlags usage;
16454 SharingMode sharingMode;
16455 uint32_t queueFamilyIndexCount;
16456 const uint32_t* pQueueFamilyIndices;
16457 ImageLayout initialLayout;
16458 };
16459 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16460
16461 struct PipelineMultisampleStateCreateInfo
16462 {
16463 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16464 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16465 , pNext( nullptr )
16466 , flags( flags_ )
16467 , rasterizationSamples( rasterizationSamples_ )
16468 , sampleShadingEnable( sampleShadingEnable_ )
16469 , minSampleShading( minSampleShading_ )
16470 , pSampleMask( pSampleMask_ )
16471 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16472 , alphaToOneEnable( alphaToOneEnable_ )
16473 {
16474 }
16475
16476 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16477 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016478 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016479 }
16480
16481 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16482 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016483 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016484 return *this;
16485 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016486 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16487 {
16488 pNext = pNext_;
16489 return *this;
16490 }
16491
16492 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16493 {
16494 flags = flags_;
16495 return *this;
16496 }
16497
16498 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16499 {
16500 rasterizationSamples = rasterizationSamples_;
16501 return *this;
16502 }
16503
16504 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16505 {
16506 sampleShadingEnable = sampleShadingEnable_;
16507 return *this;
16508 }
16509
16510 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16511 {
16512 minSampleShading = minSampleShading_;
16513 return *this;
16514 }
16515
16516 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16517 {
16518 pSampleMask = pSampleMask_;
16519 return *this;
16520 }
16521
16522 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16523 {
16524 alphaToCoverageEnable = alphaToCoverageEnable_;
16525 return *this;
16526 }
16527
16528 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16529 {
16530 alphaToOneEnable = alphaToOneEnable_;
16531 return *this;
16532 }
16533
16534 operator const VkPipelineMultisampleStateCreateInfo&() const
16535 {
16536 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16537 }
16538
16539 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16540 {
16541 return ( sType == rhs.sType )
16542 && ( pNext == rhs.pNext )
16543 && ( flags == rhs.flags )
16544 && ( rasterizationSamples == rhs.rasterizationSamples )
16545 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16546 && ( minSampleShading == rhs.minSampleShading )
16547 && ( pSampleMask == rhs.pSampleMask )
16548 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16549 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16550 }
16551
16552 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16553 {
16554 return !operator==( rhs );
16555 }
16556
16557 private:
16558 StructureType sType;
16559
16560 public:
16561 const void* pNext;
16562 PipelineMultisampleStateCreateFlags flags;
16563 SampleCountFlagBits rasterizationSamples;
16564 Bool32 sampleShadingEnable;
16565 float minSampleShading;
16566 const SampleMask* pSampleMask;
16567 Bool32 alphaToCoverageEnable;
16568 Bool32 alphaToOneEnable;
16569 };
16570 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16571
16572 struct GraphicsPipelineCreateInfo
16573 {
16574 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 )
16575 : sType( StructureType::eGraphicsPipelineCreateInfo )
16576 , pNext( nullptr )
16577 , flags( flags_ )
16578 , stageCount( stageCount_ )
16579 , pStages( pStages_ )
16580 , pVertexInputState( pVertexInputState_ )
16581 , pInputAssemblyState( pInputAssemblyState_ )
16582 , pTessellationState( pTessellationState_ )
16583 , pViewportState( pViewportState_ )
16584 , pRasterizationState( pRasterizationState_ )
16585 , pMultisampleState( pMultisampleState_ )
16586 , pDepthStencilState( pDepthStencilState_ )
16587 , pColorBlendState( pColorBlendState_ )
16588 , pDynamicState( pDynamicState_ )
16589 , layout( layout_ )
16590 , renderPass( renderPass_ )
16591 , subpass( subpass_ )
16592 , basePipelineHandle( basePipelineHandle_ )
16593 , basePipelineIndex( basePipelineIndex_ )
16594 {
16595 }
16596
16597 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16598 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016599 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016600 }
16601
16602 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016604 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016605 return *this;
16606 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016607 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16608 {
16609 pNext = pNext_;
16610 return *this;
16611 }
16612
16613 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16614 {
16615 flags = flags_;
16616 return *this;
16617 }
16618
16619 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16620 {
16621 stageCount = stageCount_;
16622 return *this;
16623 }
16624
16625 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16626 {
16627 pStages = pStages_;
16628 return *this;
16629 }
16630
16631 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16632 {
16633 pVertexInputState = pVertexInputState_;
16634 return *this;
16635 }
16636
16637 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16638 {
16639 pInputAssemblyState = pInputAssemblyState_;
16640 return *this;
16641 }
16642
16643 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16644 {
16645 pTessellationState = pTessellationState_;
16646 return *this;
16647 }
16648
16649 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16650 {
16651 pViewportState = pViewportState_;
16652 return *this;
16653 }
16654
16655 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16656 {
16657 pRasterizationState = pRasterizationState_;
16658 return *this;
16659 }
16660
16661 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16662 {
16663 pMultisampleState = pMultisampleState_;
16664 return *this;
16665 }
16666
16667 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16668 {
16669 pDepthStencilState = pDepthStencilState_;
16670 return *this;
16671 }
16672
16673 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16674 {
16675 pColorBlendState = pColorBlendState_;
16676 return *this;
16677 }
16678
16679 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16680 {
16681 pDynamicState = pDynamicState_;
16682 return *this;
16683 }
16684
16685 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16686 {
16687 layout = layout_;
16688 return *this;
16689 }
16690
16691 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16692 {
16693 renderPass = renderPass_;
16694 return *this;
16695 }
16696
16697 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16698 {
16699 subpass = subpass_;
16700 return *this;
16701 }
16702
16703 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16704 {
16705 basePipelineHandle = basePipelineHandle_;
16706 return *this;
16707 }
16708
16709 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16710 {
16711 basePipelineIndex = basePipelineIndex_;
16712 return *this;
16713 }
16714
16715 operator const VkGraphicsPipelineCreateInfo&() const
16716 {
16717 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16718 }
16719
16720 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16721 {
16722 return ( sType == rhs.sType )
16723 && ( pNext == rhs.pNext )
16724 && ( flags == rhs.flags )
16725 && ( stageCount == rhs.stageCount )
16726 && ( pStages == rhs.pStages )
16727 && ( pVertexInputState == rhs.pVertexInputState )
16728 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16729 && ( pTessellationState == rhs.pTessellationState )
16730 && ( pViewportState == rhs.pViewportState )
16731 && ( pRasterizationState == rhs.pRasterizationState )
16732 && ( pMultisampleState == rhs.pMultisampleState )
16733 && ( pDepthStencilState == rhs.pDepthStencilState )
16734 && ( pColorBlendState == rhs.pColorBlendState )
16735 && ( pDynamicState == rhs.pDynamicState )
16736 && ( layout == rhs.layout )
16737 && ( renderPass == rhs.renderPass )
16738 && ( subpass == rhs.subpass )
16739 && ( basePipelineHandle == rhs.basePipelineHandle )
16740 && ( basePipelineIndex == rhs.basePipelineIndex );
16741 }
16742
16743 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16744 {
16745 return !operator==( rhs );
16746 }
16747
16748 private:
16749 StructureType sType;
16750
16751 public:
16752 const void* pNext;
16753 PipelineCreateFlags flags;
16754 uint32_t stageCount;
16755 const PipelineShaderStageCreateInfo* pStages;
16756 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16757 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16758 const PipelineTessellationStateCreateInfo* pTessellationState;
16759 const PipelineViewportStateCreateInfo* pViewportState;
16760 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16761 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16762 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16763 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16764 const PipelineDynamicStateCreateInfo* pDynamicState;
16765 PipelineLayout layout;
16766 RenderPass renderPass;
16767 uint32_t subpass;
16768 Pipeline basePipelineHandle;
16769 int32_t basePipelineIndex;
16770 };
16771 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16772
16773 struct PhysicalDeviceLimits
16774 {
16775 operator const VkPhysicalDeviceLimits&() const
16776 {
16777 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16778 }
16779
16780 bool operator==( PhysicalDeviceLimits const& rhs ) const
16781 {
16782 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16783 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16784 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16785 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16786 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16787 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16788 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16789 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16790 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16791 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16792 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16793 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16794 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16795 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16796 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16797 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16798 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16799 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16800 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16801 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16802 && ( maxPerStageResources == rhs.maxPerStageResources )
16803 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16804 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16805 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16806 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16807 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16808 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16809 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16810 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16811 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16812 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16813 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16814 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16815 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16816 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16817 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16818 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16819 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16820 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16821 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16822 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16823 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16824 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16825 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16826 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16827 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16828 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16829 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16830 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16831 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16832 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16833 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16834 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16835 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16836 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16837 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16838 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16839 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16840 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16841 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16842 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16843 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16844 && ( maxViewports == rhs.maxViewports )
16845 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16846 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16847 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16848 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16849 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16850 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16851 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16852 && ( minTexelOffset == rhs.minTexelOffset )
16853 && ( maxTexelOffset == rhs.maxTexelOffset )
16854 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16855 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16856 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16857 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16858 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16859 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16860 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16861 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16862 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16863 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16864 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16865 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16866 && ( maxColorAttachments == rhs.maxColorAttachments )
16867 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16868 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16869 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16870 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16871 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16872 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16873 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16874 && ( timestampPeriod == rhs.timestampPeriod )
16875 && ( maxClipDistances == rhs.maxClipDistances )
16876 && ( maxCullDistances == rhs.maxCullDistances )
16877 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16878 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16879 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16880 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16881 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16882 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16883 && ( strictLines == rhs.strictLines )
16884 && ( standardSampleLocations == rhs.standardSampleLocations )
16885 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16886 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16887 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16888 }
16889
16890 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16891 {
16892 return !operator==( rhs );
16893 }
16894
16895 uint32_t maxImageDimension1D;
16896 uint32_t maxImageDimension2D;
16897 uint32_t maxImageDimension3D;
16898 uint32_t maxImageDimensionCube;
16899 uint32_t maxImageArrayLayers;
16900 uint32_t maxTexelBufferElements;
16901 uint32_t maxUniformBufferRange;
16902 uint32_t maxStorageBufferRange;
16903 uint32_t maxPushConstantsSize;
16904 uint32_t maxMemoryAllocationCount;
16905 uint32_t maxSamplerAllocationCount;
16906 DeviceSize bufferImageGranularity;
16907 DeviceSize sparseAddressSpaceSize;
16908 uint32_t maxBoundDescriptorSets;
16909 uint32_t maxPerStageDescriptorSamplers;
16910 uint32_t maxPerStageDescriptorUniformBuffers;
16911 uint32_t maxPerStageDescriptorStorageBuffers;
16912 uint32_t maxPerStageDescriptorSampledImages;
16913 uint32_t maxPerStageDescriptorStorageImages;
16914 uint32_t maxPerStageDescriptorInputAttachments;
16915 uint32_t maxPerStageResources;
16916 uint32_t maxDescriptorSetSamplers;
16917 uint32_t maxDescriptorSetUniformBuffers;
16918 uint32_t maxDescriptorSetUniformBuffersDynamic;
16919 uint32_t maxDescriptorSetStorageBuffers;
16920 uint32_t maxDescriptorSetStorageBuffersDynamic;
16921 uint32_t maxDescriptorSetSampledImages;
16922 uint32_t maxDescriptorSetStorageImages;
16923 uint32_t maxDescriptorSetInputAttachments;
16924 uint32_t maxVertexInputAttributes;
16925 uint32_t maxVertexInputBindings;
16926 uint32_t maxVertexInputAttributeOffset;
16927 uint32_t maxVertexInputBindingStride;
16928 uint32_t maxVertexOutputComponents;
16929 uint32_t maxTessellationGenerationLevel;
16930 uint32_t maxTessellationPatchSize;
16931 uint32_t maxTessellationControlPerVertexInputComponents;
16932 uint32_t maxTessellationControlPerVertexOutputComponents;
16933 uint32_t maxTessellationControlPerPatchOutputComponents;
16934 uint32_t maxTessellationControlTotalOutputComponents;
16935 uint32_t maxTessellationEvaluationInputComponents;
16936 uint32_t maxTessellationEvaluationOutputComponents;
16937 uint32_t maxGeometryShaderInvocations;
16938 uint32_t maxGeometryInputComponents;
16939 uint32_t maxGeometryOutputComponents;
16940 uint32_t maxGeometryOutputVertices;
16941 uint32_t maxGeometryTotalOutputComponents;
16942 uint32_t maxFragmentInputComponents;
16943 uint32_t maxFragmentOutputAttachments;
16944 uint32_t maxFragmentDualSrcAttachments;
16945 uint32_t maxFragmentCombinedOutputResources;
16946 uint32_t maxComputeSharedMemorySize;
16947 uint32_t maxComputeWorkGroupCount[3];
16948 uint32_t maxComputeWorkGroupInvocations;
16949 uint32_t maxComputeWorkGroupSize[3];
16950 uint32_t subPixelPrecisionBits;
16951 uint32_t subTexelPrecisionBits;
16952 uint32_t mipmapPrecisionBits;
16953 uint32_t maxDrawIndexedIndexValue;
16954 uint32_t maxDrawIndirectCount;
16955 float maxSamplerLodBias;
16956 float maxSamplerAnisotropy;
16957 uint32_t maxViewports;
16958 uint32_t maxViewportDimensions[2];
16959 float viewportBoundsRange[2];
16960 uint32_t viewportSubPixelBits;
16961 size_t minMemoryMapAlignment;
16962 DeviceSize minTexelBufferOffsetAlignment;
16963 DeviceSize minUniformBufferOffsetAlignment;
16964 DeviceSize minStorageBufferOffsetAlignment;
16965 int32_t minTexelOffset;
16966 uint32_t maxTexelOffset;
16967 int32_t minTexelGatherOffset;
16968 uint32_t maxTexelGatherOffset;
16969 float minInterpolationOffset;
16970 float maxInterpolationOffset;
16971 uint32_t subPixelInterpolationOffsetBits;
16972 uint32_t maxFramebufferWidth;
16973 uint32_t maxFramebufferHeight;
16974 uint32_t maxFramebufferLayers;
16975 SampleCountFlags framebufferColorSampleCounts;
16976 SampleCountFlags framebufferDepthSampleCounts;
16977 SampleCountFlags framebufferStencilSampleCounts;
16978 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16979 uint32_t maxColorAttachments;
16980 SampleCountFlags sampledImageColorSampleCounts;
16981 SampleCountFlags sampledImageIntegerSampleCounts;
16982 SampleCountFlags sampledImageDepthSampleCounts;
16983 SampleCountFlags sampledImageStencilSampleCounts;
16984 SampleCountFlags storageImageSampleCounts;
16985 uint32_t maxSampleMaskWords;
16986 Bool32 timestampComputeAndGraphics;
16987 float timestampPeriod;
16988 uint32_t maxClipDistances;
16989 uint32_t maxCullDistances;
16990 uint32_t maxCombinedClipAndCullDistances;
16991 uint32_t discreteQueuePriorities;
16992 float pointSizeRange[2];
16993 float lineWidthRange[2];
16994 float pointSizeGranularity;
16995 float lineWidthGranularity;
16996 Bool32 strictLines;
16997 Bool32 standardSampleLocations;
16998 DeviceSize optimalBufferCopyOffsetAlignment;
16999 DeviceSize optimalBufferCopyRowPitchAlignment;
17000 DeviceSize nonCoherentAtomSize;
17001 };
17002 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
17003
17004 struct PhysicalDeviceProperties
17005 {
17006 operator const VkPhysicalDeviceProperties&() const
17007 {
17008 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
17009 }
17010
17011 bool operator==( PhysicalDeviceProperties const& rhs ) const
17012 {
17013 return ( apiVersion == rhs.apiVersion )
17014 && ( driverVersion == rhs.driverVersion )
17015 && ( vendorID == rhs.vendorID )
17016 && ( deviceID == rhs.deviceID )
17017 && ( deviceType == rhs.deviceType )
17018 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
17019 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
17020 && ( limits == rhs.limits )
17021 && ( sparseProperties == rhs.sparseProperties );
17022 }
17023
17024 bool operator!=( PhysicalDeviceProperties const& rhs ) const
17025 {
17026 return !operator==( rhs );
17027 }
17028
17029 uint32_t apiVersion;
17030 uint32_t driverVersion;
17031 uint32_t vendorID;
17032 uint32_t deviceID;
17033 PhysicalDeviceType deviceType;
17034 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
17035 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
17036 PhysicalDeviceLimits limits;
17037 PhysicalDeviceSparseProperties sparseProperties;
17038 };
17039 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
17040
Mark Young39389872017-01-19 21:10:49 -070017041 struct PhysicalDeviceProperties2KHR
17042 {
17043 operator const VkPhysicalDeviceProperties2KHR&() const
17044 {
17045 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
17046 }
17047
17048 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
17049 {
17050 return ( sType == rhs.sType )
17051 && ( pNext == rhs.pNext )
17052 && ( properties == rhs.properties );
17053 }
17054
17055 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
17056 {
17057 return !operator==( rhs );
17058 }
17059
17060 private:
17061 StructureType sType;
17062
17063 public:
17064 void* pNext;
17065 PhysicalDeviceProperties properties;
17066 };
17067 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
17068
17069 struct ImageFormatProperties2KHR
17070 {
17071 operator const VkImageFormatProperties2KHR&() const
17072 {
17073 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
17074 }
17075
17076 bool operator==( ImageFormatProperties2KHR const& rhs ) const
17077 {
17078 return ( sType == rhs.sType )
17079 && ( pNext == rhs.pNext )
17080 && ( imageFormatProperties == rhs.imageFormatProperties );
17081 }
17082
17083 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
17084 {
17085 return !operator==( rhs );
17086 }
17087
17088 private:
17089 StructureType sType;
17090
17091 public:
17092 void* pNext;
17093 ImageFormatProperties imageFormatProperties;
17094 };
17095 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17096
17097 struct PhysicalDeviceSparseImageFormatInfo2KHR
17098 {
17099 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
17100 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
17101 , pNext( nullptr )
17102 , format( format_ )
17103 , type( type_ )
17104 , samples( samples_ )
17105 , usage( usage_ )
17106 , tiling( tiling_ )
17107 {
17108 }
17109
17110 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17111 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017112 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017113 }
17114
17115 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
17116 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017117 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070017118 return *this;
17119 }
Mark Young39389872017-01-19 21:10:49 -070017120 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
17121 {
17122 pNext = pNext_;
17123 return *this;
17124 }
17125
17126 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
17127 {
17128 format = format_;
17129 return *this;
17130 }
17131
17132 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
17133 {
17134 type = type_;
17135 return *this;
17136 }
17137
17138 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17139 {
17140 samples = samples_;
17141 return *this;
17142 }
17143
17144 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17145 {
17146 usage = usage_;
17147 return *this;
17148 }
17149
17150 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17151 {
17152 tiling = tiling_;
17153 return *this;
17154 }
17155
17156 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17157 {
17158 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17159 }
17160
17161 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17162 {
17163 return ( sType == rhs.sType )
17164 && ( pNext == rhs.pNext )
17165 && ( format == rhs.format )
17166 && ( type == rhs.type )
17167 && ( samples == rhs.samples )
17168 && ( usage == rhs.usage )
17169 && ( tiling == rhs.tiling );
17170 }
17171
17172 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17173 {
17174 return !operator==( rhs );
17175 }
17176
17177 private:
17178 StructureType sType;
17179
17180 public:
17181 const void* pNext;
17182 Format format;
17183 ImageType type;
17184 SampleCountFlagBits samples;
17185 ImageUsageFlags usage;
17186 ImageTiling tiling;
17187 };
17188 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
17189
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017190 enum class AttachmentDescriptionFlagBits
17191 {
17192 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
17193 };
17194
17195 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
17196
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017197 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017198 {
17199 return AttachmentDescriptionFlags( bit0 ) | bit1;
17200 }
17201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017202 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
17203 {
17204 return ~( AttachmentDescriptionFlags( bits ) );
17205 }
17206
17207 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
17208 {
17209 enum
17210 {
17211 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
17212 };
17213 };
17214
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017215 struct AttachmentDescription
17216 {
17217 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 )
17218 : flags( flags_ )
17219 , format( format_ )
17220 , samples( samples_ )
17221 , loadOp( loadOp_ )
17222 , storeOp( storeOp_ )
17223 , stencilLoadOp( stencilLoadOp_ )
17224 , stencilStoreOp( stencilStoreOp_ )
17225 , initialLayout( initialLayout_ )
17226 , finalLayout( finalLayout_ )
17227 {
17228 }
17229
17230 AttachmentDescription( VkAttachmentDescription const & rhs )
17231 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017232 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017233 }
17234
17235 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
17236 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017237 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017238 return *this;
17239 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017240 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
17241 {
17242 flags = flags_;
17243 return *this;
17244 }
17245
17246 AttachmentDescription& setFormat( Format format_ )
17247 {
17248 format = format_;
17249 return *this;
17250 }
17251
17252 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
17253 {
17254 samples = samples_;
17255 return *this;
17256 }
17257
17258 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
17259 {
17260 loadOp = loadOp_;
17261 return *this;
17262 }
17263
17264 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
17265 {
17266 storeOp = storeOp_;
17267 return *this;
17268 }
17269
17270 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
17271 {
17272 stencilLoadOp = stencilLoadOp_;
17273 return *this;
17274 }
17275
17276 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
17277 {
17278 stencilStoreOp = stencilStoreOp_;
17279 return *this;
17280 }
17281
17282 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
17283 {
17284 initialLayout = initialLayout_;
17285 return *this;
17286 }
17287
17288 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
17289 {
17290 finalLayout = finalLayout_;
17291 return *this;
17292 }
17293
17294 operator const VkAttachmentDescription&() const
17295 {
17296 return *reinterpret_cast<const VkAttachmentDescription*>(this);
17297 }
17298
17299 bool operator==( AttachmentDescription const& rhs ) const
17300 {
17301 return ( flags == rhs.flags )
17302 && ( format == rhs.format )
17303 && ( samples == rhs.samples )
17304 && ( loadOp == rhs.loadOp )
17305 && ( storeOp == rhs.storeOp )
17306 && ( stencilLoadOp == rhs.stencilLoadOp )
17307 && ( stencilStoreOp == rhs.stencilStoreOp )
17308 && ( initialLayout == rhs.initialLayout )
17309 && ( finalLayout == rhs.finalLayout );
17310 }
17311
17312 bool operator!=( AttachmentDescription const& rhs ) const
17313 {
17314 return !operator==( rhs );
17315 }
17316
17317 AttachmentDescriptionFlags flags;
17318 Format format;
17319 SampleCountFlagBits samples;
17320 AttachmentLoadOp loadOp;
17321 AttachmentStoreOp storeOp;
17322 AttachmentLoadOp stencilLoadOp;
17323 AttachmentStoreOp stencilStoreOp;
17324 ImageLayout initialLayout;
17325 ImageLayout finalLayout;
17326 };
17327 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17328
17329 enum class StencilFaceFlagBits
17330 {
17331 eFront = VK_STENCIL_FACE_FRONT_BIT,
17332 eBack = VK_STENCIL_FACE_BACK_BIT,
17333 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17334 };
17335
17336 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17337
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017338 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017339 {
17340 return StencilFaceFlags( bit0 ) | bit1;
17341 }
17342
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017343 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17344 {
17345 return ~( StencilFaceFlags( bits ) );
17346 }
17347
17348 template <> struct FlagTraits<StencilFaceFlagBits>
17349 {
17350 enum
17351 {
17352 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17353 };
17354 };
17355
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017356 enum class DescriptorPoolCreateFlagBits
17357 {
17358 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17359 };
17360
17361 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017363 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017364 {
17365 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17366 }
17367
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017368 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17369 {
17370 return ~( DescriptorPoolCreateFlags( bits ) );
17371 }
17372
17373 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17374 {
17375 enum
17376 {
17377 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17378 };
17379 };
17380
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017381 struct DescriptorPoolCreateInfo
17382 {
17383 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17384 : sType( StructureType::eDescriptorPoolCreateInfo )
17385 , pNext( nullptr )
17386 , flags( flags_ )
17387 , maxSets( maxSets_ )
17388 , poolSizeCount( poolSizeCount_ )
17389 , pPoolSizes( pPoolSizes_ )
17390 {
17391 }
17392
17393 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17394 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017395 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017396 }
17397
17398 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17399 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017400 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017401 return *this;
17402 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017403 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17404 {
17405 pNext = pNext_;
17406 return *this;
17407 }
17408
17409 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17410 {
17411 flags = flags_;
17412 return *this;
17413 }
17414
17415 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17416 {
17417 maxSets = maxSets_;
17418 return *this;
17419 }
17420
17421 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17422 {
17423 poolSizeCount = poolSizeCount_;
17424 return *this;
17425 }
17426
17427 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17428 {
17429 pPoolSizes = pPoolSizes_;
17430 return *this;
17431 }
17432
17433 operator const VkDescriptorPoolCreateInfo&() const
17434 {
17435 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17436 }
17437
17438 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17439 {
17440 return ( sType == rhs.sType )
17441 && ( pNext == rhs.pNext )
17442 && ( flags == rhs.flags )
17443 && ( maxSets == rhs.maxSets )
17444 && ( poolSizeCount == rhs.poolSizeCount )
17445 && ( pPoolSizes == rhs.pPoolSizes );
17446 }
17447
17448 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17449 {
17450 return !operator==( rhs );
17451 }
17452
17453 private:
17454 StructureType sType;
17455
17456 public:
17457 const void* pNext;
17458 DescriptorPoolCreateFlags flags;
17459 uint32_t maxSets;
17460 uint32_t poolSizeCount;
17461 const DescriptorPoolSize* pPoolSizes;
17462 };
17463 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17464
17465 enum class DependencyFlagBits
17466 {
Mark Young0f183a82017-02-28 09:58:04 -070017467 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17468 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17469 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017470 };
17471
17472 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017474 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017475 {
17476 return DependencyFlags( bit0 ) | bit1;
17477 }
17478
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017479 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17480 {
17481 return ~( DependencyFlags( bits ) );
17482 }
17483
17484 template <> struct FlagTraits<DependencyFlagBits>
17485 {
17486 enum
17487 {
Mark Young0f183a82017-02-28 09:58:04 -070017488 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017489 };
17490 };
17491
17492 struct SubpassDependency
17493 {
17494 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17495 : srcSubpass( srcSubpass_ )
17496 , dstSubpass( dstSubpass_ )
17497 , srcStageMask( srcStageMask_ )
17498 , dstStageMask( dstStageMask_ )
17499 , srcAccessMask( srcAccessMask_ )
17500 , dstAccessMask( dstAccessMask_ )
17501 , dependencyFlags( dependencyFlags_ )
17502 {
17503 }
17504
17505 SubpassDependency( VkSubpassDependency const & rhs )
17506 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017507 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017508 }
17509
17510 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17511 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017512 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017513 return *this;
17514 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017515 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17516 {
17517 srcSubpass = srcSubpass_;
17518 return *this;
17519 }
17520
17521 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17522 {
17523 dstSubpass = dstSubpass_;
17524 return *this;
17525 }
17526
17527 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17528 {
17529 srcStageMask = srcStageMask_;
17530 return *this;
17531 }
17532
17533 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17534 {
17535 dstStageMask = dstStageMask_;
17536 return *this;
17537 }
17538
17539 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17540 {
17541 srcAccessMask = srcAccessMask_;
17542 return *this;
17543 }
17544
17545 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17546 {
17547 dstAccessMask = dstAccessMask_;
17548 return *this;
17549 }
17550
17551 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17552 {
17553 dependencyFlags = dependencyFlags_;
17554 return *this;
17555 }
17556
17557 operator const VkSubpassDependency&() const
17558 {
17559 return *reinterpret_cast<const VkSubpassDependency*>(this);
17560 }
17561
17562 bool operator==( SubpassDependency const& rhs ) const
17563 {
17564 return ( srcSubpass == rhs.srcSubpass )
17565 && ( dstSubpass == rhs.dstSubpass )
17566 && ( srcStageMask == rhs.srcStageMask )
17567 && ( dstStageMask == rhs.dstStageMask )
17568 && ( srcAccessMask == rhs.srcAccessMask )
17569 && ( dstAccessMask == rhs.dstAccessMask )
17570 && ( dependencyFlags == rhs.dependencyFlags );
17571 }
17572
17573 bool operator!=( SubpassDependency const& rhs ) const
17574 {
17575 return !operator==( rhs );
17576 }
17577
17578 uint32_t srcSubpass;
17579 uint32_t dstSubpass;
17580 PipelineStageFlags srcStageMask;
17581 PipelineStageFlags dstStageMask;
17582 AccessFlags srcAccessMask;
17583 AccessFlags dstAccessMask;
17584 DependencyFlags dependencyFlags;
17585 };
17586 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17587
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017588 enum class PresentModeKHR
17589 {
17590 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17591 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17592 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060017593 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
17594 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
17595 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017596 };
17597
17598 enum class ColorSpaceKHR
17599 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060017600 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
17601 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
17602 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
17603 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
17604 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
17605 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
17606 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
17607 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
17608 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
17609 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
17610 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
17611 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
17612 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
17613 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017614 };
17615
17616 struct SurfaceFormatKHR
17617 {
17618 operator const VkSurfaceFormatKHR&() const
17619 {
17620 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17621 }
17622
17623 bool operator==( SurfaceFormatKHR const& rhs ) const
17624 {
17625 return ( format == rhs.format )
17626 && ( colorSpace == rhs.colorSpace );
17627 }
17628
17629 bool operator!=( SurfaceFormatKHR const& rhs ) const
17630 {
17631 return !operator==( rhs );
17632 }
17633
17634 Format format;
17635 ColorSpaceKHR colorSpace;
17636 };
17637 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17638
Mark Lobodzinski54385432017-05-15 10:27:52 -060017639 struct SurfaceFormat2KHR
17640 {
17641 operator const VkSurfaceFormat2KHR&() const
17642 {
17643 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
17644 }
17645
17646 bool operator==( SurfaceFormat2KHR const& rhs ) const
17647 {
17648 return ( sType == rhs.sType )
17649 && ( pNext == rhs.pNext )
17650 && ( surfaceFormat == rhs.surfaceFormat );
17651 }
17652
17653 bool operator!=( SurfaceFormat2KHR const& rhs ) const
17654 {
17655 return !operator==( rhs );
17656 }
17657
17658 private:
17659 StructureType sType;
17660
17661 public:
17662 void* pNext;
17663 SurfaceFormatKHR surfaceFormat;
17664 };
17665 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
17666
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017667 enum class DisplayPlaneAlphaFlagBitsKHR
17668 {
17669 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17670 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17671 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17672 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17673 };
17674
17675 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17676
17677 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17678 {
17679 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17680 }
17681
17682 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17683 {
17684 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17685 }
17686
17687 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17688 {
17689 enum
17690 {
17691 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17692 };
17693 };
17694
17695 struct DisplayPlaneCapabilitiesKHR
17696 {
17697 operator const VkDisplayPlaneCapabilitiesKHR&() const
17698 {
17699 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17700 }
17701
17702 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17703 {
17704 return ( supportedAlpha == rhs.supportedAlpha )
17705 && ( minSrcPosition == rhs.minSrcPosition )
17706 && ( maxSrcPosition == rhs.maxSrcPosition )
17707 && ( minSrcExtent == rhs.minSrcExtent )
17708 && ( maxSrcExtent == rhs.maxSrcExtent )
17709 && ( minDstPosition == rhs.minDstPosition )
17710 && ( maxDstPosition == rhs.maxDstPosition )
17711 && ( minDstExtent == rhs.minDstExtent )
17712 && ( maxDstExtent == rhs.maxDstExtent );
17713 }
17714
17715 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17716 {
17717 return !operator==( rhs );
17718 }
17719
17720 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17721 Offset2D minSrcPosition;
17722 Offset2D maxSrcPosition;
17723 Extent2D minSrcExtent;
17724 Extent2D maxSrcExtent;
17725 Offset2D minDstPosition;
17726 Offset2D maxDstPosition;
17727 Extent2D minDstExtent;
17728 Extent2D maxDstExtent;
17729 };
17730 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17731
17732 enum class CompositeAlphaFlagBitsKHR
17733 {
17734 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17735 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17736 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17737 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17738 };
17739
17740 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17741
17742 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17743 {
17744 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17745 }
17746
17747 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17748 {
17749 return ~( CompositeAlphaFlagsKHR( bits ) );
17750 }
17751
17752 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17753 {
17754 enum
17755 {
17756 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17757 };
17758 };
17759
17760 enum class SurfaceTransformFlagBitsKHR
17761 {
17762 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17763 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17764 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17765 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17766 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17767 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17768 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17769 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17770 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17771 };
17772
17773 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17774
17775 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17776 {
17777 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17778 }
17779
17780 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17781 {
17782 return ~( SurfaceTransformFlagsKHR( bits ) );
17783 }
17784
17785 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17786 {
17787 enum
17788 {
17789 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)
17790 };
17791 };
17792
17793 struct DisplayPropertiesKHR
17794 {
17795 operator const VkDisplayPropertiesKHR&() const
17796 {
17797 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17798 }
17799
17800 bool operator==( DisplayPropertiesKHR const& rhs ) const
17801 {
17802 return ( display == rhs.display )
17803 && ( displayName == rhs.displayName )
17804 && ( physicalDimensions == rhs.physicalDimensions )
17805 && ( physicalResolution == rhs.physicalResolution )
17806 && ( supportedTransforms == rhs.supportedTransforms )
17807 && ( planeReorderPossible == rhs.planeReorderPossible )
17808 && ( persistentContent == rhs.persistentContent );
17809 }
17810
17811 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17812 {
17813 return !operator==( rhs );
17814 }
17815
17816 DisplayKHR display;
17817 const char* displayName;
17818 Extent2D physicalDimensions;
17819 Extent2D physicalResolution;
17820 SurfaceTransformFlagsKHR supportedTransforms;
17821 Bool32 planeReorderPossible;
17822 Bool32 persistentContent;
17823 };
17824 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17825
17826 struct DisplaySurfaceCreateInfoKHR
17827 {
17828 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() )
17829 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17830 , pNext( nullptr )
17831 , flags( flags_ )
17832 , displayMode( displayMode_ )
17833 , planeIndex( planeIndex_ )
17834 , planeStackIndex( planeStackIndex_ )
17835 , transform( transform_ )
17836 , globalAlpha( globalAlpha_ )
17837 , alphaMode( alphaMode_ )
17838 , imageExtent( imageExtent_ )
17839 {
17840 }
17841
17842 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017844 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017845 }
17846
17847 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17848 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017849 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017850 return *this;
17851 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017852 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17853 {
17854 pNext = pNext_;
17855 return *this;
17856 }
17857
17858 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17859 {
17860 flags = flags_;
17861 return *this;
17862 }
17863
17864 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17865 {
17866 displayMode = displayMode_;
17867 return *this;
17868 }
17869
17870 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17871 {
17872 planeIndex = planeIndex_;
17873 return *this;
17874 }
17875
17876 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17877 {
17878 planeStackIndex = planeStackIndex_;
17879 return *this;
17880 }
17881
17882 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17883 {
17884 transform = transform_;
17885 return *this;
17886 }
17887
17888 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17889 {
17890 globalAlpha = globalAlpha_;
17891 return *this;
17892 }
17893
17894 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17895 {
17896 alphaMode = alphaMode_;
17897 return *this;
17898 }
17899
17900 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17901 {
17902 imageExtent = imageExtent_;
17903 return *this;
17904 }
17905
17906 operator const VkDisplaySurfaceCreateInfoKHR&() const
17907 {
17908 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17909 }
17910
17911 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17912 {
17913 return ( sType == rhs.sType )
17914 && ( pNext == rhs.pNext )
17915 && ( flags == rhs.flags )
17916 && ( displayMode == rhs.displayMode )
17917 && ( planeIndex == rhs.planeIndex )
17918 && ( planeStackIndex == rhs.planeStackIndex )
17919 && ( transform == rhs.transform )
17920 && ( globalAlpha == rhs.globalAlpha )
17921 && ( alphaMode == rhs.alphaMode )
17922 && ( imageExtent == rhs.imageExtent );
17923 }
17924
17925 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17926 {
17927 return !operator==( rhs );
17928 }
17929
17930 private:
17931 StructureType sType;
17932
17933 public:
17934 const void* pNext;
17935 DisplaySurfaceCreateFlagsKHR flags;
17936 DisplayModeKHR displayMode;
17937 uint32_t planeIndex;
17938 uint32_t planeStackIndex;
17939 SurfaceTransformFlagBitsKHR transform;
17940 float globalAlpha;
17941 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17942 Extent2D imageExtent;
17943 };
17944 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17945
17946 struct SurfaceCapabilitiesKHR
17947 {
17948 operator const VkSurfaceCapabilitiesKHR&() const
17949 {
17950 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17951 }
17952
17953 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17954 {
17955 return ( minImageCount == rhs.minImageCount )
17956 && ( maxImageCount == rhs.maxImageCount )
17957 && ( currentExtent == rhs.currentExtent )
17958 && ( minImageExtent == rhs.minImageExtent )
17959 && ( maxImageExtent == rhs.maxImageExtent )
17960 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17961 && ( supportedTransforms == rhs.supportedTransforms )
17962 && ( currentTransform == rhs.currentTransform )
17963 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17964 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17965 }
17966
17967 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17968 {
17969 return !operator==( rhs );
17970 }
17971
17972 uint32_t minImageCount;
17973 uint32_t maxImageCount;
17974 Extent2D currentExtent;
17975 Extent2D minImageExtent;
17976 Extent2D maxImageExtent;
17977 uint32_t maxImageArrayLayers;
17978 SurfaceTransformFlagsKHR supportedTransforms;
17979 SurfaceTransformFlagBitsKHR currentTransform;
17980 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17981 ImageUsageFlags supportedUsageFlags;
17982 };
17983 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17984
Mark Lobodzinski54385432017-05-15 10:27:52 -060017985 struct SurfaceCapabilities2KHR
17986 {
17987 operator const VkSurfaceCapabilities2KHR&() const
17988 {
17989 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
17990 }
17991
17992 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
17993 {
17994 return ( sType == rhs.sType )
17995 && ( pNext == rhs.pNext )
17996 && ( surfaceCapabilities == rhs.surfaceCapabilities );
17997 }
17998
17999 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
18000 {
18001 return !operator==( rhs );
18002 }
18003
18004 private:
18005 StructureType sType;
18006
18007 public:
18008 void* pNext;
18009 SurfaceCapabilitiesKHR surfaceCapabilities;
18010 };
18011 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
18012
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018013 enum class DebugReportFlagBitsEXT
18014 {
18015 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
18016 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
18017 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
18018 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
18019 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
18020 };
18021
18022 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
18023
18024 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
18025 {
18026 return DebugReportFlagsEXT( bit0 ) | bit1;
18027 }
18028
18029 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
18030 {
18031 return ~( DebugReportFlagsEXT( bits ) );
18032 }
18033
18034 template <> struct FlagTraits<DebugReportFlagBitsEXT>
18035 {
18036 enum
18037 {
18038 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
18039 };
18040 };
18041
18042 struct DebugReportCallbackCreateInfoEXT
18043 {
18044 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
18045 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
18046 , pNext( nullptr )
18047 , flags( flags_ )
18048 , pfnCallback( pfnCallback_ )
18049 , pUserData( pUserData_ )
18050 {
18051 }
18052
18053 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
18054 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018055 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018056 }
18057
18058 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
18059 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018060 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018061 return *this;
18062 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018063 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
18064 {
18065 pNext = pNext_;
18066 return *this;
18067 }
18068
18069 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
18070 {
18071 flags = flags_;
18072 return *this;
18073 }
18074
18075 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
18076 {
18077 pfnCallback = pfnCallback_;
18078 return *this;
18079 }
18080
18081 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
18082 {
18083 pUserData = pUserData_;
18084 return *this;
18085 }
18086
18087 operator const VkDebugReportCallbackCreateInfoEXT&() const
18088 {
18089 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
18090 }
18091
18092 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
18093 {
18094 return ( sType == rhs.sType )
18095 && ( pNext == rhs.pNext )
18096 && ( flags == rhs.flags )
18097 && ( pfnCallback == rhs.pfnCallback )
18098 && ( pUserData == rhs.pUserData );
18099 }
18100
18101 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
18102 {
18103 return !operator==( rhs );
18104 }
18105
18106 private:
18107 StructureType sType;
18108
18109 public:
18110 const void* pNext;
18111 DebugReportFlagsEXT flags;
18112 PFN_vkDebugReportCallbackEXT pfnCallback;
18113 void* pUserData;
18114 };
18115 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
18116
18117 enum class DebugReportObjectTypeEXT
18118 {
18119 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
18120 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
18121 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
18122 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
18123 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
18124 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
18125 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
18126 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
18127 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
18128 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
18129 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
18130 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
18131 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
18132 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
18133 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
18134 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
18135 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
18136 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
18137 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
18138 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
18139 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
18140 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
18141 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
18142 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
18143 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
18144 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
18145 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
18146 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018147 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018148 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
18149 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
18150 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060018151 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -060018152 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018153 };
18154
18155 struct DebugMarkerObjectNameInfoEXT
18156 {
18157 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
18158 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
18159 , pNext( nullptr )
18160 , objectType( objectType_ )
18161 , object( object_ )
18162 , pObjectName( pObjectName_ )
18163 {
18164 }
18165
18166 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
18167 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018168 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018169 }
18170
18171 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
18172 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018173 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018174 return *this;
18175 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018176 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
18177 {
18178 pNext = pNext_;
18179 return *this;
18180 }
18181
18182 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18183 {
18184 objectType = objectType_;
18185 return *this;
18186 }
18187
18188 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
18189 {
18190 object = object_;
18191 return *this;
18192 }
18193
18194 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
18195 {
18196 pObjectName = pObjectName_;
18197 return *this;
18198 }
18199
18200 operator const VkDebugMarkerObjectNameInfoEXT&() const
18201 {
18202 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
18203 }
18204
18205 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
18206 {
18207 return ( sType == rhs.sType )
18208 && ( pNext == rhs.pNext )
18209 && ( objectType == rhs.objectType )
18210 && ( object == rhs.object )
18211 && ( pObjectName == rhs.pObjectName );
18212 }
18213
18214 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
18215 {
18216 return !operator==( rhs );
18217 }
18218
18219 private:
18220 StructureType sType;
18221
18222 public:
18223 const void* pNext;
18224 DebugReportObjectTypeEXT objectType;
18225 uint64_t object;
18226 const char* pObjectName;
18227 };
18228 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
18229
18230 struct DebugMarkerObjectTagInfoEXT
18231 {
18232 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
18233 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
18234 , pNext( nullptr )
18235 , objectType( objectType_ )
18236 , object( object_ )
18237 , tagName( tagName_ )
18238 , tagSize( tagSize_ )
18239 , pTag( pTag_ )
18240 {
18241 }
18242
18243 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
18244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018245 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018246 }
18247
18248 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
18249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018250 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018251 return *this;
18252 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018253 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
18254 {
18255 pNext = pNext_;
18256 return *this;
18257 }
18258
18259 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18260 {
18261 objectType = objectType_;
18262 return *this;
18263 }
18264
18265 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
18266 {
18267 object = object_;
18268 return *this;
18269 }
18270
18271 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
18272 {
18273 tagName = tagName_;
18274 return *this;
18275 }
18276
18277 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
18278 {
18279 tagSize = tagSize_;
18280 return *this;
18281 }
18282
18283 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
18284 {
18285 pTag = pTag_;
18286 return *this;
18287 }
18288
18289 operator const VkDebugMarkerObjectTagInfoEXT&() const
18290 {
18291 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
18292 }
18293
18294 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
18295 {
18296 return ( sType == rhs.sType )
18297 && ( pNext == rhs.pNext )
18298 && ( objectType == rhs.objectType )
18299 && ( object == rhs.object )
18300 && ( tagName == rhs.tagName )
18301 && ( tagSize == rhs.tagSize )
18302 && ( pTag == rhs.pTag );
18303 }
18304
18305 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
18306 {
18307 return !operator==( rhs );
18308 }
18309
18310 private:
18311 StructureType sType;
18312
18313 public:
18314 const void* pNext;
18315 DebugReportObjectTypeEXT objectType;
18316 uint64_t object;
18317 uint64_t tagName;
18318 size_t tagSize;
18319 const void* pTag;
18320 };
18321 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
18322
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018323 enum class RasterizationOrderAMD
18324 {
18325 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
18326 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
18327 };
18328
18329 struct PipelineRasterizationStateRasterizationOrderAMD
18330 {
18331 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
18332 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
18333 , pNext( nullptr )
18334 , rasterizationOrder( rasterizationOrder_ )
18335 {
18336 }
18337
18338 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18339 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018340 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018341 }
18342
18343 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18344 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018345 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018346 return *this;
18347 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018348 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
18349 {
18350 pNext = pNext_;
18351 return *this;
18352 }
18353
18354 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
18355 {
18356 rasterizationOrder = rasterizationOrder_;
18357 return *this;
18358 }
18359
18360 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
18361 {
18362 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
18363 }
18364
18365 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18366 {
18367 return ( sType == rhs.sType )
18368 && ( pNext == rhs.pNext )
18369 && ( rasterizationOrder == rhs.rasterizationOrder );
18370 }
18371
18372 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18373 {
18374 return !operator==( rhs );
18375 }
18376
18377 private:
18378 StructureType sType;
18379
18380 public:
18381 const void* pNext;
18382 RasterizationOrderAMD rasterizationOrder;
18383 };
18384 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18385
18386 enum class ExternalMemoryHandleTypeFlagBitsNV
18387 {
18388 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18389 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18390 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18391 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18392 };
18393
18394 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18395
18396 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18397 {
18398 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18399 }
18400
18401 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18402 {
18403 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18404 }
18405
18406 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18407 {
18408 enum
18409 {
18410 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18411 };
18412 };
18413
18414 struct ExternalMemoryImageCreateInfoNV
18415 {
18416 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18417 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18418 , pNext( nullptr )
18419 , handleTypes( handleTypes_ )
18420 {
18421 }
18422
18423 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18424 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018425 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018426 }
18427
18428 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18429 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018430 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018431 return *this;
18432 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018433 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18434 {
18435 pNext = pNext_;
18436 return *this;
18437 }
18438
18439 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18440 {
18441 handleTypes = handleTypes_;
18442 return *this;
18443 }
18444
18445 operator const VkExternalMemoryImageCreateInfoNV&() const
18446 {
18447 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18448 }
18449
18450 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18451 {
18452 return ( sType == rhs.sType )
18453 && ( pNext == rhs.pNext )
18454 && ( handleTypes == rhs.handleTypes );
18455 }
18456
18457 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18458 {
18459 return !operator==( rhs );
18460 }
18461
18462 private:
18463 StructureType sType;
18464
18465 public:
18466 const void* pNext;
18467 ExternalMemoryHandleTypeFlagsNV handleTypes;
18468 };
18469 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18470
18471 struct ExportMemoryAllocateInfoNV
18472 {
18473 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18474 : sType( StructureType::eExportMemoryAllocateInfoNV )
18475 , pNext( nullptr )
18476 , handleTypes( handleTypes_ )
18477 {
18478 }
18479
18480 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18481 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018482 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018483 }
18484
18485 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18486 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018487 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018488 return *this;
18489 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018490 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18491 {
18492 pNext = pNext_;
18493 return *this;
18494 }
18495
18496 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18497 {
18498 handleTypes = handleTypes_;
18499 return *this;
18500 }
18501
18502 operator const VkExportMemoryAllocateInfoNV&() const
18503 {
18504 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18505 }
18506
18507 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18508 {
18509 return ( sType == rhs.sType )
18510 && ( pNext == rhs.pNext )
18511 && ( handleTypes == rhs.handleTypes );
18512 }
18513
18514 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18515 {
18516 return !operator==( rhs );
18517 }
18518
18519 private:
18520 StructureType sType;
18521
18522 public:
18523 const void* pNext;
18524 ExternalMemoryHandleTypeFlagsNV handleTypes;
18525 };
18526 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18527
18528#ifdef VK_USE_PLATFORM_WIN32_KHR
18529 struct ImportMemoryWin32HandleInfoNV
18530 {
18531 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18532 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18533 , pNext( nullptr )
18534 , handleType( handleType_ )
18535 , handle( handle_ )
18536 {
18537 }
18538
18539 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18540 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018541 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018542 }
18543
18544 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18545 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018546 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018547 return *this;
18548 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018549 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18550 {
18551 pNext = pNext_;
18552 return *this;
18553 }
18554
18555 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18556 {
18557 handleType = handleType_;
18558 return *this;
18559 }
18560
18561 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18562 {
18563 handle = handle_;
18564 return *this;
18565 }
18566
18567 operator const VkImportMemoryWin32HandleInfoNV&() const
18568 {
18569 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18570 }
18571
18572 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18573 {
18574 return ( sType == rhs.sType )
18575 && ( pNext == rhs.pNext )
18576 && ( handleType == rhs.handleType )
18577 && ( handle == rhs.handle );
18578 }
18579
18580 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18581 {
18582 return !operator==( rhs );
18583 }
18584
18585 private:
18586 StructureType sType;
18587
18588 public:
18589 const void* pNext;
18590 ExternalMemoryHandleTypeFlagsNV handleType;
18591 HANDLE handle;
18592 };
18593 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18594#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18595
18596 enum class ExternalMemoryFeatureFlagBitsNV
18597 {
18598 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18599 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18600 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18601 };
18602
18603 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18604
18605 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18606 {
18607 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18608 }
18609
18610 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18611 {
18612 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18613 }
18614
18615 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18616 {
18617 enum
18618 {
18619 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18620 };
18621 };
18622
18623 struct ExternalImageFormatPropertiesNV
18624 {
18625 operator const VkExternalImageFormatPropertiesNV&() const
18626 {
18627 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18628 }
18629
18630 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18631 {
18632 return ( imageFormatProperties == rhs.imageFormatProperties )
18633 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18634 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18635 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18636 }
18637
18638 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18639 {
18640 return !operator==( rhs );
18641 }
18642
18643 ImageFormatProperties imageFormatProperties;
18644 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18645 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18646 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18647 };
18648 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18649
18650 enum class ValidationCheckEXT
18651 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018652 eAll = VK_VALIDATION_CHECK_ALL_EXT,
18653 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018654 };
18655
18656 struct ValidationFlagsEXT
18657 {
18658 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18659 : sType( StructureType::eValidationFlagsEXT )
18660 , pNext( nullptr )
18661 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18662 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18663 {
18664 }
18665
18666 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18667 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018668 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018669 }
18670
18671 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18672 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018673 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018674 return *this;
18675 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018676 ValidationFlagsEXT& setPNext( const void* pNext_ )
18677 {
18678 pNext = pNext_;
18679 return *this;
18680 }
18681
18682 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18683 {
18684 disabledValidationCheckCount = disabledValidationCheckCount_;
18685 return *this;
18686 }
18687
18688 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18689 {
18690 pDisabledValidationChecks = pDisabledValidationChecks_;
18691 return *this;
18692 }
18693
18694 operator const VkValidationFlagsEXT&() const
18695 {
18696 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18697 }
18698
18699 bool operator==( ValidationFlagsEXT const& rhs ) const
18700 {
18701 return ( sType == rhs.sType )
18702 && ( pNext == rhs.pNext )
18703 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18704 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18705 }
18706
18707 bool operator!=( ValidationFlagsEXT const& rhs ) const
18708 {
18709 return !operator==( rhs );
18710 }
18711
18712 private:
18713 StructureType sType;
18714
18715 public:
18716 const void* pNext;
18717 uint32_t disabledValidationCheckCount;
18718 ValidationCheckEXT* pDisabledValidationChecks;
18719 };
18720 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18721
18722 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18723 {
18724 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18725 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18726 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18727 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18728 };
18729
18730 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18731
18732 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18733 {
18734 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18735 }
18736
18737 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18738 {
18739 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18740 }
18741
18742 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18743 {
18744 enum
18745 {
18746 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18747 };
18748 };
18749
18750 enum class ObjectEntryUsageFlagBitsNVX
18751 {
18752 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18753 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18754 };
18755
18756 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18757
18758 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18759 {
18760 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18761 }
18762
18763 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18764 {
18765 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18766 }
18767
18768 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18769 {
18770 enum
18771 {
18772 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18773 };
18774 };
18775
18776 enum class IndirectCommandsTokenTypeNVX
18777 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060018778 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
18779 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
18780 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
18781 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
18782 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
18783 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
18784 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
18785 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018786 };
18787
18788 struct IndirectCommandsTokenNVX
18789 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060018790 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018791 : tokenType( tokenType_ )
18792 , buffer( buffer_ )
18793 , offset( offset_ )
18794 {
18795 }
18796
18797 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18798 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018799 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018800 }
18801
18802 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18803 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018804 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018805 return *this;
18806 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018807 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18808 {
18809 tokenType = tokenType_;
18810 return *this;
18811 }
18812
18813 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18814 {
18815 buffer = buffer_;
18816 return *this;
18817 }
18818
18819 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18820 {
18821 offset = offset_;
18822 return *this;
18823 }
18824
18825 operator const VkIndirectCommandsTokenNVX&() const
18826 {
18827 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18828 }
18829
18830 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18831 {
18832 return ( tokenType == rhs.tokenType )
18833 && ( buffer == rhs.buffer )
18834 && ( offset == rhs.offset );
18835 }
18836
18837 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18838 {
18839 return !operator==( rhs );
18840 }
18841
18842 IndirectCommandsTokenTypeNVX tokenType;
18843 Buffer buffer;
18844 DeviceSize offset;
18845 };
18846 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18847
18848 struct IndirectCommandsLayoutTokenNVX
18849 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060018850 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018851 : tokenType( tokenType_ )
18852 , bindingUnit( bindingUnit_ )
18853 , dynamicCount( dynamicCount_ )
18854 , divisor( divisor_ )
18855 {
18856 }
18857
18858 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18859 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018860 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018861 }
18862
18863 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018865 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018866 return *this;
18867 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018868 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18869 {
18870 tokenType = tokenType_;
18871 return *this;
18872 }
18873
18874 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18875 {
18876 bindingUnit = bindingUnit_;
18877 return *this;
18878 }
18879
18880 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18881 {
18882 dynamicCount = dynamicCount_;
18883 return *this;
18884 }
18885
18886 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18887 {
18888 divisor = divisor_;
18889 return *this;
18890 }
18891
18892 operator const VkIndirectCommandsLayoutTokenNVX&() const
18893 {
18894 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18895 }
18896
18897 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18898 {
18899 return ( tokenType == rhs.tokenType )
18900 && ( bindingUnit == rhs.bindingUnit )
18901 && ( dynamicCount == rhs.dynamicCount )
18902 && ( divisor == rhs.divisor );
18903 }
18904
18905 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18906 {
18907 return !operator==( rhs );
18908 }
18909
18910 IndirectCommandsTokenTypeNVX tokenType;
18911 uint32_t bindingUnit;
18912 uint32_t dynamicCount;
18913 uint32_t divisor;
18914 };
18915 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18916
18917 struct IndirectCommandsLayoutCreateInfoNVX
18918 {
18919 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18920 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18921 , pNext( nullptr )
18922 , pipelineBindPoint( pipelineBindPoint_ )
18923 , flags( flags_ )
18924 , tokenCount( tokenCount_ )
18925 , pTokens( pTokens_ )
18926 {
18927 }
18928
18929 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18930 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018931 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018932 }
18933
18934 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18935 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018936 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018937 return *this;
18938 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018939 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18940 {
18941 pNext = pNext_;
18942 return *this;
18943 }
18944
18945 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18946 {
18947 pipelineBindPoint = pipelineBindPoint_;
18948 return *this;
18949 }
18950
18951 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18952 {
18953 flags = flags_;
18954 return *this;
18955 }
18956
18957 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18958 {
18959 tokenCount = tokenCount_;
18960 return *this;
18961 }
18962
18963 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18964 {
18965 pTokens = pTokens_;
18966 return *this;
18967 }
18968
18969 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18970 {
18971 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18972 }
18973
18974 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18975 {
18976 return ( sType == rhs.sType )
18977 && ( pNext == rhs.pNext )
18978 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18979 && ( flags == rhs.flags )
18980 && ( tokenCount == rhs.tokenCount )
18981 && ( pTokens == rhs.pTokens );
18982 }
18983
18984 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18985 {
18986 return !operator==( rhs );
18987 }
18988
18989 private:
18990 StructureType sType;
18991
18992 public:
18993 const void* pNext;
18994 PipelineBindPoint pipelineBindPoint;
18995 IndirectCommandsLayoutUsageFlagsNVX flags;
18996 uint32_t tokenCount;
18997 const IndirectCommandsLayoutTokenNVX* pTokens;
18998 };
18999 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
19000
19001 enum class ObjectEntryTypeNVX
19002 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019003 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
19004 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
19005 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
19006 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
19007 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019008 };
19009
19010 struct ObjectTableCreateInfoNVX
19011 {
19012 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 )
19013 : sType( StructureType::eObjectTableCreateInfoNVX )
19014 , pNext( nullptr )
19015 , objectCount( objectCount_ )
19016 , pObjectEntryTypes( pObjectEntryTypes_ )
19017 , pObjectEntryCounts( pObjectEntryCounts_ )
19018 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
19019 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
19020 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
19021 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
19022 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
19023 , maxPipelineLayouts( maxPipelineLayouts_ )
19024 {
19025 }
19026
19027 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
19028 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019029 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019030 }
19031
19032 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
19033 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019034 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019035 return *this;
19036 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019037 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
19038 {
19039 pNext = pNext_;
19040 return *this;
19041 }
19042
19043 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
19044 {
19045 objectCount = objectCount_;
19046 return *this;
19047 }
19048
19049 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
19050 {
19051 pObjectEntryTypes = pObjectEntryTypes_;
19052 return *this;
19053 }
19054
19055 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
19056 {
19057 pObjectEntryCounts = pObjectEntryCounts_;
19058 return *this;
19059 }
19060
19061 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
19062 {
19063 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
19064 return *this;
19065 }
19066
19067 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
19068 {
19069 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
19070 return *this;
19071 }
19072
19073 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
19074 {
19075 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
19076 return *this;
19077 }
19078
19079 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
19080 {
19081 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
19082 return *this;
19083 }
19084
19085 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
19086 {
19087 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
19088 return *this;
19089 }
19090
19091 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
19092 {
19093 maxPipelineLayouts = maxPipelineLayouts_;
19094 return *this;
19095 }
19096
19097 operator const VkObjectTableCreateInfoNVX&() const
19098 {
19099 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
19100 }
19101
19102 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
19103 {
19104 return ( sType == rhs.sType )
19105 && ( pNext == rhs.pNext )
19106 && ( objectCount == rhs.objectCount )
19107 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
19108 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
19109 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
19110 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
19111 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
19112 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
19113 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
19114 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
19115 }
19116
19117 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
19118 {
19119 return !operator==( rhs );
19120 }
19121
19122 private:
19123 StructureType sType;
19124
19125 public:
19126 const void* pNext;
19127 uint32_t objectCount;
19128 const ObjectEntryTypeNVX* pObjectEntryTypes;
19129 const uint32_t* pObjectEntryCounts;
19130 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
19131 uint32_t maxUniformBuffersPerDescriptor;
19132 uint32_t maxStorageBuffersPerDescriptor;
19133 uint32_t maxStorageImagesPerDescriptor;
19134 uint32_t maxSampledImagesPerDescriptor;
19135 uint32_t maxPipelineLayouts;
19136 };
19137 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
19138
19139 struct ObjectTableEntryNVX
19140 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019141 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019142 : type( type_ )
19143 , flags( flags_ )
19144 {
19145 }
19146
19147 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
19148 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019149 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019150 }
19151
19152 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
19153 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019154 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019155 return *this;
19156 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019157 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
19158 {
19159 type = type_;
19160 return *this;
19161 }
19162
19163 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19164 {
19165 flags = flags_;
19166 return *this;
19167 }
19168
19169 operator const VkObjectTableEntryNVX&() const
19170 {
19171 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
19172 }
19173
19174 bool operator==( ObjectTableEntryNVX const& rhs ) const
19175 {
19176 return ( type == rhs.type )
19177 && ( flags == rhs.flags );
19178 }
19179
19180 bool operator!=( ObjectTableEntryNVX const& rhs ) const
19181 {
19182 return !operator==( rhs );
19183 }
19184
19185 ObjectEntryTypeNVX type;
19186 ObjectEntryUsageFlagsNVX flags;
19187 };
19188 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
19189
19190 struct ObjectTablePipelineEntryNVX
19191 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019192 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019193 : type( type_ )
19194 , flags( flags_ )
19195 , pipeline( pipeline_ )
19196 {
19197 }
19198
19199 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
19200 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019201 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019202 }
19203
19204 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
19205 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019206 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019207 return *this;
19208 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019209 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
19210 {
19211 type = type_;
19212 return *this;
19213 }
19214
19215 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19216 {
19217 flags = flags_;
19218 return *this;
19219 }
19220
19221 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
19222 {
19223 pipeline = pipeline_;
19224 return *this;
19225 }
19226
19227 operator const VkObjectTablePipelineEntryNVX&() const
19228 {
19229 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
19230 }
19231
19232 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
19233 {
19234 return ( type == rhs.type )
19235 && ( flags == rhs.flags )
19236 && ( pipeline == rhs.pipeline );
19237 }
19238
19239 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
19240 {
19241 return !operator==( rhs );
19242 }
19243
19244 ObjectEntryTypeNVX type;
19245 ObjectEntryUsageFlagsNVX flags;
19246 Pipeline pipeline;
19247 };
19248 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
19249
19250 struct ObjectTableDescriptorSetEntryNVX
19251 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019252 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019253 : type( type_ )
19254 , flags( flags_ )
19255 , pipelineLayout( pipelineLayout_ )
19256 , descriptorSet( descriptorSet_ )
19257 {
19258 }
19259
19260 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
19261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019262 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019263 }
19264
19265 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
19266 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019267 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019268 return *this;
19269 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019270 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
19271 {
19272 type = type_;
19273 return *this;
19274 }
19275
19276 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19277 {
19278 flags = flags_;
19279 return *this;
19280 }
19281
19282 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19283 {
19284 pipelineLayout = pipelineLayout_;
19285 return *this;
19286 }
19287
19288 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
19289 {
19290 descriptorSet = descriptorSet_;
19291 return *this;
19292 }
19293
19294 operator const VkObjectTableDescriptorSetEntryNVX&() const
19295 {
19296 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
19297 }
19298
19299 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19300 {
19301 return ( type == rhs.type )
19302 && ( flags == rhs.flags )
19303 && ( pipelineLayout == rhs.pipelineLayout )
19304 && ( descriptorSet == rhs.descriptorSet );
19305 }
19306
19307 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19308 {
19309 return !operator==( rhs );
19310 }
19311
19312 ObjectEntryTypeNVX type;
19313 ObjectEntryUsageFlagsNVX flags;
19314 PipelineLayout pipelineLayout;
19315 DescriptorSet descriptorSet;
19316 };
19317 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
19318
19319 struct ObjectTableVertexBufferEntryNVX
19320 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019321 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019322 : type( type_ )
19323 , flags( flags_ )
19324 , buffer( buffer_ )
19325 {
19326 }
19327
19328 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
19329 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019330 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019331 }
19332
19333 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
19334 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019335 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019336 return *this;
19337 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019338 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19339 {
19340 type = type_;
19341 return *this;
19342 }
19343
19344 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19345 {
19346 flags = flags_;
19347 return *this;
19348 }
19349
19350 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
19351 {
19352 buffer = buffer_;
19353 return *this;
19354 }
19355
19356 operator const VkObjectTableVertexBufferEntryNVX&() const
19357 {
19358 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
19359 }
19360
19361 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19362 {
19363 return ( type == rhs.type )
19364 && ( flags == rhs.flags )
19365 && ( buffer == rhs.buffer );
19366 }
19367
19368 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19369 {
19370 return !operator==( rhs );
19371 }
19372
19373 ObjectEntryTypeNVX type;
19374 ObjectEntryUsageFlagsNVX flags;
19375 Buffer buffer;
19376 };
19377 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19378
19379 struct ObjectTableIndexBufferEntryNVX
19380 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019381 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019382 : type( type_ )
19383 , flags( flags_ )
19384 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019385 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019386 {
19387 }
19388
19389 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19390 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019391 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019392 }
19393
19394 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19395 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019396 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019397 return *this;
19398 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019399 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19400 {
19401 type = type_;
19402 return *this;
19403 }
19404
19405 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19406 {
19407 flags = flags_;
19408 return *this;
19409 }
19410
19411 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19412 {
19413 buffer = buffer_;
19414 return *this;
19415 }
19416
Mark Young39389872017-01-19 21:10:49 -070019417 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19418 {
19419 indexType = indexType_;
19420 return *this;
19421 }
19422
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019423 operator const VkObjectTableIndexBufferEntryNVX&() const
19424 {
19425 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19426 }
19427
19428 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19429 {
19430 return ( type == rhs.type )
19431 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019432 && ( buffer == rhs.buffer )
19433 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019434 }
19435
19436 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19437 {
19438 return !operator==( rhs );
19439 }
19440
19441 ObjectEntryTypeNVX type;
19442 ObjectEntryUsageFlagsNVX flags;
19443 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019444 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019445 };
19446 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19447
19448 struct ObjectTablePushConstantEntryNVX
19449 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060019450 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019451 : type( type_ )
19452 , flags( flags_ )
19453 , pipelineLayout( pipelineLayout_ )
19454 , stageFlags( stageFlags_ )
19455 {
19456 }
19457
19458 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019460 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019461 }
19462
19463 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19464 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019465 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019466 return *this;
19467 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019468 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19469 {
19470 type = type_;
19471 return *this;
19472 }
19473
19474 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19475 {
19476 flags = flags_;
19477 return *this;
19478 }
19479
19480 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19481 {
19482 pipelineLayout = pipelineLayout_;
19483 return *this;
19484 }
19485
19486 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19487 {
19488 stageFlags = stageFlags_;
19489 return *this;
19490 }
19491
19492 operator const VkObjectTablePushConstantEntryNVX&() const
19493 {
19494 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19495 }
19496
19497 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19498 {
19499 return ( type == rhs.type )
19500 && ( flags == rhs.flags )
19501 && ( pipelineLayout == rhs.pipelineLayout )
19502 && ( stageFlags == rhs.stageFlags );
19503 }
19504
19505 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19506 {
19507 return !operator==( rhs );
19508 }
19509
19510 ObjectEntryTypeNVX type;
19511 ObjectEntryUsageFlagsNVX flags;
19512 PipelineLayout pipelineLayout;
19513 ShaderStageFlags stageFlags;
19514 };
19515 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19516
Mark Young0f183a82017-02-28 09:58:04 -070019517 enum class DescriptorSetLayoutCreateFlagBits
19518 {
19519 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19520 };
19521
19522 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19523
19524 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19525 {
19526 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19527 }
19528
19529 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19530 {
19531 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19532 }
19533
19534 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19535 {
19536 enum
19537 {
19538 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19539 };
19540 };
19541
19542 struct DescriptorSetLayoutCreateInfo
19543 {
19544 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19545 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19546 , pNext( nullptr )
19547 , flags( flags_ )
19548 , bindingCount( bindingCount_ )
19549 , pBindings( pBindings_ )
19550 {
19551 }
19552
19553 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19554 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019555 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070019556 }
19557
19558 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19559 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019560 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070019561 return *this;
19562 }
Mark Young0f183a82017-02-28 09:58:04 -070019563 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19564 {
19565 pNext = pNext_;
19566 return *this;
19567 }
19568
19569 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19570 {
19571 flags = flags_;
19572 return *this;
19573 }
19574
19575 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19576 {
19577 bindingCount = bindingCount_;
19578 return *this;
19579 }
19580
19581 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19582 {
19583 pBindings = pBindings_;
19584 return *this;
19585 }
19586
19587 operator const VkDescriptorSetLayoutCreateInfo&() const
19588 {
19589 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19590 }
19591
19592 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19593 {
19594 return ( sType == rhs.sType )
19595 && ( pNext == rhs.pNext )
19596 && ( flags == rhs.flags )
19597 && ( bindingCount == rhs.bindingCount )
19598 && ( pBindings == rhs.pBindings );
19599 }
19600
19601 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19602 {
19603 return !operator==( rhs );
19604 }
19605
19606 private:
19607 StructureType sType;
19608
19609 public:
19610 const void* pNext;
19611 DescriptorSetLayoutCreateFlags flags;
19612 uint32_t bindingCount;
19613 const DescriptorSetLayoutBinding* pBindings;
19614 };
19615 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19616
19617 enum class ExternalMemoryHandleTypeFlagBitsKHX
19618 {
19619 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19620 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19621 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19622 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19623 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19624 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19625 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19626 };
19627
19628 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19629
19630 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19631 {
19632 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19633 }
19634
19635 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19636 {
19637 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19638 }
19639
19640 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19641 {
19642 enum
19643 {
19644 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19645 };
19646 };
19647
19648 struct PhysicalDeviceExternalImageFormatInfoKHX
19649 {
19650 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19651 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19652 , pNext( nullptr )
19653 , handleType( handleType_ )
19654 {
19655 }
19656
19657 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19658 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019659 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019660 }
19661
19662 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019664 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019665 return *this;
19666 }
Mark Young0f183a82017-02-28 09:58:04 -070019667 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19668 {
19669 pNext = pNext_;
19670 return *this;
19671 }
19672
19673 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19674 {
19675 handleType = handleType_;
19676 return *this;
19677 }
19678
19679 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19680 {
19681 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19682 }
19683
19684 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19685 {
19686 return ( sType == rhs.sType )
19687 && ( pNext == rhs.pNext )
19688 && ( handleType == rhs.handleType );
19689 }
19690
19691 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19692 {
19693 return !operator==( rhs );
19694 }
19695
19696 private:
19697 StructureType sType;
19698
19699 public:
19700 const void* pNext;
19701 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19702 };
19703 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19704
19705 struct PhysicalDeviceExternalBufferInfoKHX
19706 {
19707 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19708 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19709 , pNext( nullptr )
19710 , flags( flags_ )
19711 , usage( usage_ )
19712 , handleType( handleType_ )
19713 {
19714 }
19715
19716 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19717 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019718 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019719 }
19720
19721 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19722 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019723 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019724 return *this;
19725 }
Mark Young0f183a82017-02-28 09:58:04 -070019726 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19727 {
19728 pNext = pNext_;
19729 return *this;
19730 }
19731
19732 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19733 {
19734 flags = flags_;
19735 return *this;
19736 }
19737
19738 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19739 {
19740 usage = usage_;
19741 return *this;
19742 }
19743
19744 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19745 {
19746 handleType = handleType_;
19747 return *this;
19748 }
19749
19750 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19751 {
19752 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19753 }
19754
19755 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19756 {
19757 return ( sType == rhs.sType )
19758 && ( pNext == rhs.pNext )
19759 && ( flags == rhs.flags )
19760 && ( usage == rhs.usage )
19761 && ( handleType == rhs.handleType );
19762 }
19763
19764 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19765 {
19766 return !operator==( rhs );
19767 }
19768
19769 private:
19770 StructureType sType;
19771
19772 public:
19773 const void* pNext;
19774 BufferCreateFlags flags;
19775 BufferUsageFlags usage;
19776 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19777 };
19778 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19779
19780 struct ExternalMemoryImageCreateInfoKHX
19781 {
19782 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19783 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19784 , pNext( nullptr )
19785 , handleTypes( handleTypes_ )
19786 {
19787 }
19788
19789 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19790 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019791 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019792 }
19793
19794 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19795 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019796 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019797 return *this;
19798 }
Mark Young0f183a82017-02-28 09:58:04 -070019799 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19800 {
19801 pNext = pNext_;
19802 return *this;
19803 }
19804
19805 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19806 {
19807 handleTypes = handleTypes_;
19808 return *this;
19809 }
19810
19811 operator const VkExternalMemoryImageCreateInfoKHX&() const
19812 {
19813 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19814 }
19815
19816 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19817 {
19818 return ( sType == rhs.sType )
19819 && ( pNext == rhs.pNext )
19820 && ( handleTypes == rhs.handleTypes );
19821 }
19822
19823 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19824 {
19825 return !operator==( rhs );
19826 }
19827
19828 private:
19829 StructureType sType;
19830
19831 public:
19832 const void* pNext;
19833 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19834 };
19835 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19836
19837 struct ExternalMemoryBufferCreateInfoKHX
19838 {
19839 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19840 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19841 , pNext( nullptr )
19842 , handleTypes( handleTypes_ )
19843 {
19844 }
19845
19846 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19847 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019848 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019849 }
19850
19851 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19852 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019853 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019854 return *this;
19855 }
Mark Young0f183a82017-02-28 09:58:04 -070019856 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19857 {
19858 pNext = pNext_;
19859 return *this;
19860 }
19861
19862 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19863 {
19864 handleTypes = handleTypes_;
19865 return *this;
19866 }
19867
19868 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19869 {
19870 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19871 }
19872
19873 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19874 {
19875 return ( sType == rhs.sType )
19876 && ( pNext == rhs.pNext )
19877 && ( handleTypes == rhs.handleTypes );
19878 }
19879
19880 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19881 {
19882 return !operator==( rhs );
19883 }
19884
19885 private:
19886 StructureType sType;
19887
19888 public:
19889 const void* pNext;
19890 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19891 };
19892 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19893
19894 struct ExportMemoryAllocateInfoKHX
19895 {
19896 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19897 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19898 , pNext( nullptr )
19899 , handleTypes( handleTypes_ )
19900 {
19901 }
19902
19903 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19904 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019905 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019906 }
19907
19908 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19909 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019910 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019911 return *this;
19912 }
Mark Young0f183a82017-02-28 09:58:04 -070019913 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19914 {
19915 pNext = pNext_;
19916 return *this;
19917 }
19918
19919 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19920 {
19921 handleTypes = handleTypes_;
19922 return *this;
19923 }
19924
19925 operator const VkExportMemoryAllocateInfoKHX&() const
19926 {
19927 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19928 }
19929
19930 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19931 {
19932 return ( sType == rhs.sType )
19933 && ( pNext == rhs.pNext )
19934 && ( handleTypes == rhs.handleTypes );
19935 }
19936
19937 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19938 {
19939 return !operator==( rhs );
19940 }
19941
19942 private:
19943 StructureType sType;
19944
19945 public:
19946 const void* pNext;
19947 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19948 };
19949 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19950
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019951#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070019952 struct ImportMemoryWin32HandleInfoKHX
19953 {
19954 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19955 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19956 , pNext( nullptr )
19957 , handleType( handleType_ )
19958 , handle( handle_ )
19959 {
19960 }
19961
19962 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019964 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019965 }
19966
19967 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19968 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019969 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070019970 return *this;
19971 }
Mark Young0f183a82017-02-28 09:58:04 -070019972 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19973 {
19974 pNext = pNext_;
19975 return *this;
19976 }
19977
19978 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19979 {
19980 handleType = handleType_;
19981 return *this;
19982 }
19983
19984 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
19985 {
19986 handle = handle_;
19987 return *this;
19988 }
19989
19990 operator const VkImportMemoryWin32HandleInfoKHX&() const
19991 {
19992 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
19993 }
19994
19995 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19996 {
19997 return ( sType == rhs.sType )
19998 && ( pNext == rhs.pNext )
19999 && ( handleType == rhs.handleType )
20000 && ( handle == rhs.handle );
20001 }
20002
20003 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
20004 {
20005 return !operator==( rhs );
20006 }
20007
20008 private:
20009 StructureType sType;
20010
20011 public:
20012 const void* pNext;
20013 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20014 HANDLE handle;
20015 };
20016 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020017#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070020018
20019 struct ImportMemoryFdInfoKHX
20020 {
20021 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20022 : sType( StructureType::eImportMemoryFdInfoKHX )
20023 , pNext( nullptr )
20024 , handleType( handleType_ )
20025 , fd( fd_ )
20026 {
20027 }
20028
20029 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
20030 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020031 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020032 }
20033
20034 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
20035 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020036 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020037 return *this;
20038 }
Mark Young0f183a82017-02-28 09:58:04 -070020039 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
20040 {
20041 pNext = pNext_;
20042 return *this;
20043 }
20044
20045 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
20046 {
20047 handleType = handleType_;
20048 return *this;
20049 }
20050
20051 ImportMemoryFdInfoKHX& setFd( int fd_ )
20052 {
20053 fd = fd_;
20054 return *this;
20055 }
20056
20057 operator const VkImportMemoryFdInfoKHX&() const
20058 {
20059 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
20060 }
20061
20062 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
20063 {
20064 return ( sType == rhs.sType )
20065 && ( pNext == rhs.pNext )
20066 && ( handleType == rhs.handleType )
20067 && ( fd == rhs.fd );
20068 }
20069
20070 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
20071 {
20072 return !operator==( rhs );
20073 }
20074
20075 private:
20076 StructureType sType;
20077
20078 public:
20079 const void* pNext;
20080 ExternalMemoryHandleTypeFlagBitsKHX handleType;
20081 int fd;
20082 };
20083 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
20084
20085 enum class ExternalMemoryFeatureFlagBitsKHX
20086 {
20087 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
20088 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
20089 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
20090 };
20091
20092 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
20093
20094 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
20095 {
20096 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
20097 }
20098
20099 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
20100 {
20101 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
20102 }
20103
20104 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
20105 {
20106 enum
20107 {
20108 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
20109 };
20110 };
20111
20112 struct ExternalMemoryPropertiesKHX
20113 {
20114 operator const VkExternalMemoryPropertiesKHX&() const
20115 {
20116 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
20117 }
20118
20119 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
20120 {
20121 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
20122 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20123 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
20124 }
20125
20126 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
20127 {
20128 return !operator==( rhs );
20129 }
20130
20131 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
20132 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
20133 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
20134 };
20135 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
20136
20137 struct ExternalImageFormatPropertiesKHX
20138 {
20139 operator const VkExternalImageFormatPropertiesKHX&() const
20140 {
20141 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
20142 }
20143
20144 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
20145 {
20146 return ( sType == rhs.sType )
20147 && ( pNext == rhs.pNext )
20148 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20149 }
20150
20151 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
20152 {
20153 return !operator==( rhs );
20154 }
20155
20156 private:
20157 StructureType sType;
20158
20159 public:
20160 void* pNext;
20161 ExternalMemoryPropertiesKHX externalMemoryProperties;
20162 };
20163 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
20164
20165 struct ExternalBufferPropertiesKHX
20166 {
20167 operator const VkExternalBufferPropertiesKHX&() const
20168 {
20169 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
20170 }
20171
20172 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
20173 {
20174 return ( sType == rhs.sType )
20175 && ( pNext == rhs.pNext )
20176 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20177 }
20178
20179 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
20180 {
20181 return !operator==( rhs );
20182 }
20183
20184 private:
20185 StructureType sType;
20186
20187 public:
20188 void* pNext;
20189 ExternalMemoryPropertiesKHX externalMemoryProperties;
20190 };
20191 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
20192
20193 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
20194 {
20195 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
20196 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
20197 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
20198 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
20199 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
20200 };
20201
20202 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
20203
20204 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
20205 {
20206 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
20207 }
20208
20209 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
20210 {
20211 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
20212 }
20213
20214 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
20215 {
20216 enum
20217 {
20218 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
20219 };
20220 };
20221
20222 struct PhysicalDeviceExternalSemaphoreInfoKHX
20223 {
20224 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
20225 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
20226 , pNext( nullptr )
20227 , handleType( handleType_ )
20228 {
20229 }
20230
20231 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20232 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020233 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020234 }
20235
20236 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20237 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020238 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020239 return *this;
20240 }
Mark Young0f183a82017-02-28 09:58:04 -070020241 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
20242 {
20243 pNext = pNext_;
20244 return *this;
20245 }
20246
20247 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20248 {
20249 handleType = handleType_;
20250 return *this;
20251 }
20252
20253 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
20254 {
20255 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
20256 }
20257
20258 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20259 {
20260 return ( sType == rhs.sType )
20261 && ( pNext == rhs.pNext )
20262 && ( handleType == rhs.handleType );
20263 }
20264
20265 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20266 {
20267 return !operator==( rhs );
20268 }
20269
20270 private:
20271 StructureType sType;
20272
20273 public:
20274 const void* pNext;
20275 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20276 };
20277 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
20278
20279 struct ExportSemaphoreCreateInfoKHX
20280 {
20281 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
20282 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
20283 , pNext( nullptr )
20284 , handleTypes( handleTypes_ )
20285 {
20286 }
20287
20288 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
20289 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020290 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020291 }
20292
20293 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
20294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020295 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020296 return *this;
20297 }
Mark Young0f183a82017-02-28 09:58:04 -070020298 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
20299 {
20300 pNext = pNext_;
20301 return *this;
20302 }
20303
20304 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
20305 {
20306 handleTypes = handleTypes_;
20307 return *this;
20308 }
20309
20310 operator const VkExportSemaphoreCreateInfoKHX&() const
20311 {
20312 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
20313 }
20314
20315 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
20316 {
20317 return ( sType == rhs.sType )
20318 && ( pNext == rhs.pNext )
20319 && ( handleTypes == rhs.handleTypes );
20320 }
20321
20322 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
20323 {
20324 return !operator==( rhs );
20325 }
20326
20327 private:
20328 StructureType sType;
20329
20330 public:
20331 const void* pNext;
20332 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
20333 };
20334 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
20335
20336#ifdef VK_USE_PLATFORM_WIN32_KHX
20337 struct ImportSemaphoreWin32HandleInfoKHX
20338 {
20339 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
20340 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
20341 , pNext( nullptr )
20342 , semaphore( semaphore_ )
20343 , handleType( handleType_ )
20344 , handle( handle_ )
20345 {
20346 }
20347
20348 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20349 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020350 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020351 }
20352
20353 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20354 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020355 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020356 return *this;
20357 }
Mark Young0f183a82017-02-28 09:58:04 -070020358 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20359 {
20360 pNext = pNext_;
20361 return *this;
20362 }
20363
20364 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20365 {
20366 semaphore = semaphore_;
20367 return *this;
20368 }
20369
20370 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20371 {
20372 handleType = handleType_;
20373 return *this;
20374 }
20375
20376 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20377 {
20378 handle = handle_;
20379 return *this;
20380 }
20381
20382 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20383 {
20384 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20385 }
20386
20387 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20388 {
20389 return ( sType == rhs.sType )
20390 && ( pNext == rhs.pNext )
20391 && ( semaphore == rhs.semaphore )
20392 && ( handleType == rhs.handleType )
20393 && ( handle == rhs.handle );
20394 }
20395
20396 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20397 {
20398 return !operator==( rhs );
20399 }
20400
20401 private:
20402 StructureType sType;
20403
20404 public:
20405 const void* pNext;
20406 Semaphore semaphore;
20407 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20408 HANDLE handle;
20409 };
20410 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20411#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20412
20413 struct ImportSemaphoreFdInfoKHX
20414 {
20415 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20416 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20417 , pNext( nullptr )
20418 , semaphore( semaphore_ )
20419 , handleType( handleType_ )
20420 , fd( fd_ )
20421 {
20422 }
20423
20424 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20425 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020426 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020427 }
20428
20429 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20430 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020431 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020432 return *this;
20433 }
Mark Young0f183a82017-02-28 09:58:04 -070020434 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20435 {
20436 pNext = pNext_;
20437 return *this;
20438 }
20439
20440 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20441 {
20442 semaphore = semaphore_;
20443 return *this;
20444 }
20445
20446 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20447 {
20448 handleType = handleType_;
20449 return *this;
20450 }
20451
20452 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20453 {
20454 fd = fd_;
20455 return *this;
20456 }
20457
20458 operator const VkImportSemaphoreFdInfoKHX&() const
20459 {
20460 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20461 }
20462
20463 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20464 {
20465 return ( sType == rhs.sType )
20466 && ( pNext == rhs.pNext )
20467 && ( semaphore == rhs.semaphore )
20468 && ( handleType == rhs.handleType )
20469 && ( fd == rhs.fd );
20470 }
20471
20472 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20473 {
20474 return !operator==( rhs );
20475 }
20476
20477 private:
20478 StructureType sType;
20479
20480 public:
20481 const void* pNext;
20482 Semaphore semaphore;
20483 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20484 int fd;
20485 };
20486 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20487
20488 enum class ExternalSemaphoreFeatureFlagBitsKHX
20489 {
20490 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20491 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20492 };
20493
20494 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20495
20496 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20497 {
20498 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20499 }
20500
20501 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20502 {
20503 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20504 }
20505
20506 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20507 {
20508 enum
20509 {
20510 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20511 };
20512 };
20513
20514 struct ExternalSemaphorePropertiesKHX
20515 {
20516 operator const VkExternalSemaphorePropertiesKHX&() const
20517 {
20518 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20519 }
20520
20521 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20522 {
20523 return ( sType == rhs.sType )
20524 && ( pNext == rhs.pNext )
20525 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20526 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20527 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20528 }
20529
20530 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20531 {
20532 return !operator==( rhs );
20533 }
20534
20535 private:
20536 StructureType sType;
20537
20538 public:
20539 void* pNext;
20540 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20541 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20542 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20543 };
20544 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20545
Mark Young39389872017-01-19 21:10:49 -070020546 enum class SurfaceCounterFlagBitsEXT
20547 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060020548 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070020549 };
20550
20551 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20552
20553 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20554 {
20555 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20556 }
20557
20558 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20559 {
20560 return ~( SurfaceCounterFlagsEXT( bits ) );
20561 }
20562
20563 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20564 {
20565 enum
20566 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060020567 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070020568 };
20569 };
20570
20571 struct SurfaceCapabilities2EXT
20572 {
20573 operator const VkSurfaceCapabilities2EXT&() const
20574 {
20575 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20576 }
20577
20578 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20579 {
20580 return ( sType == rhs.sType )
20581 && ( pNext == rhs.pNext )
20582 && ( minImageCount == rhs.minImageCount )
20583 && ( maxImageCount == rhs.maxImageCount )
20584 && ( currentExtent == rhs.currentExtent )
20585 && ( minImageExtent == rhs.minImageExtent )
20586 && ( maxImageExtent == rhs.maxImageExtent )
20587 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20588 && ( supportedTransforms == rhs.supportedTransforms )
20589 && ( currentTransform == rhs.currentTransform )
20590 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20591 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20592 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20593 }
20594
20595 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20596 {
20597 return !operator==( rhs );
20598 }
20599
20600 private:
20601 StructureType sType;
20602
20603 public:
20604 void* pNext;
20605 uint32_t minImageCount;
20606 uint32_t maxImageCount;
20607 Extent2D currentExtent;
20608 Extent2D minImageExtent;
20609 Extent2D maxImageExtent;
20610 uint32_t maxImageArrayLayers;
20611 SurfaceTransformFlagsKHR supportedTransforms;
20612 SurfaceTransformFlagBitsKHR currentTransform;
20613 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20614 ImageUsageFlags supportedUsageFlags;
20615 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20616 };
20617 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20618
20619 struct SwapchainCounterCreateInfoEXT
20620 {
20621 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20622 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20623 , pNext( nullptr )
20624 , surfaceCounters( surfaceCounters_ )
20625 {
20626 }
20627
20628 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20629 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020630 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020631 }
20632
20633 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20634 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020635 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020636 return *this;
20637 }
Mark Young39389872017-01-19 21:10:49 -070020638 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20639 {
20640 pNext = pNext_;
20641 return *this;
20642 }
20643
20644 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20645 {
20646 surfaceCounters = surfaceCounters_;
20647 return *this;
20648 }
20649
20650 operator const VkSwapchainCounterCreateInfoEXT&() const
20651 {
20652 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20653 }
20654
20655 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20656 {
20657 return ( sType == rhs.sType )
20658 && ( pNext == rhs.pNext )
20659 && ( surfaceCounters == rhs.surfaceCounters );
20660 }
20661
20662 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20663 {
20664 return !operator==( rhs );
20665 }
20666
20667 private:
20668 StructureType sType;
20669
20670 public:
20671 const void* pNext;
20672 SurfaceCounterFlagsEXT surfaceCounters;
20673 };
20674 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20675
20676 enum class DisplayPowerStateEXT
20677 {
20678 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20679 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20680 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20681 };
20682
20683 struct DisplayPowerInfoEXT
20684 {
20685 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20686 : sType( StructureType::eDisplayPowerInfoEXT )
20687 , pNext( nullptr )
20688 , powerState( powerState_ )
20689 {
20690 }
20691
20692 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20693 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020694 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020695 }
20696
20697 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20698 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020699 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020700 return *this;
20701 }
Mark Young39389872017-01-19 21:10:49 -070020702 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20703 {
20704 pNext = pNext_;
20705 return *this;
20706 }
20707
20708 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20709 {
20710 powerState = powerState_;
20711 return *this;
20712 }
20713
20714 operator const VkDisplayPowerInfoEXT&() const
20715 {
20716 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20717 }
20718
20719 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20720 {
20721 return ( sType == rhs.sType )
20722 && ( pNext == rhs.pNext )
20723 && ( powerState == rhs.powerState );
20724 }
20725
20726 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20727 {
20728 return !operator==( rhs );
20729 }
20730
20731 private:
20732 StructureType sType;
20733
20734 public:
20735 const void* pNext;
20736 DisplayPowerStateEXT powerState;
20737 };
20738 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20739
20740 enum class DeviceEventTypeEXT
20741 {
20742 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20743 };
20744
20745 struct DeviceEventInfoEXT
20746 {
20747 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20748 : sType( StructureType::eDeviceEventInfoEXT )
20749 , pNext( nullptr )
20750 , deviceEvent( deviceEvent_ )
20751 {
20752 }
20753
20754 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20755 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020756 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020757 }
20758
20759 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020761 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020762 return *this;
20763 }
Mark Young39389872017-01-19 21:10:49 -070020764 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20765 {
20766 pNext = pNext_;
20767 return *this;
20768 }
20769
20770 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20771 {
20772 deviceEvent = deviceEvent_;
20773 return *this;
20774 }
20775
20776 operator const VkDeviceEventInfoEXT&() const
20777 {
20778 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20779 }
20780
20781 bool operator==( DeviceEventInfoEXT const& rhs ) const
20782 {
20783 return ( sType == rhs.sType )
20784 && ( pNext == rhs.pNext )
20785 && ( deviceEvent == rhs.deviceEvent );
20786 }
20787
20788 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20789 {
20790 return !operator==( rhs );
20791 }
20792
20793 private:
20794 StructureType sType;
20795
20796 public:
20797 const void* pNext;
20798 DeviceEventTypeEXT deviceEvent;
20799 };
20800 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20801
20802 enum class DisplayEventTypeEXT
20803 {
20804 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20805 };
20806
20807 struct DisplayEventInfoEXT
20808 {
20809 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20810 : sType( StructureType::eDisplayEventInfoEXT )
20811 , pNext( nullptr )
20812 , displayEvent( displayEvent_ )
20813 {
20814 }
20815
20816 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20817 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020818 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020819 }
20820
20821 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20822 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020823 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070020824 return *this;
20825 }
Mark Young39389872017-01-19 21:10:49 -070020826 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20827 {
20828 pNext = pNext_;
20829 return *this;
20830 }
20831
20832 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20833 {
20834 displayEvent = displayEvent_;
20835 return *this;
20836 }
20837
20838 operator const VkDisplayEventInfoEXT&() const
20839 {
20840 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20841 }
20842
20843 bool operator==( DisplayEventInfoEXT const& rhs ) const
20844 {
20845 return ( sType == rhs.sType )
20846 && ( pNext == rhs.pNext )
20847 && ( displayEvent == rhs.displayEvent );
20848 }
20849
20850 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20851 {
20852 return !operator==( rhs );
20853 }
20854
20855 private:
20856 StructureType sType;
20857
20858 public:
20859 const void* pNext;
20860 DisplayEventTypeEXT displayEvent;
20861 };
20862 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20863
Mark Young0f183a82017-02-28 09:58:04 -070020864 enum class PeerMemoryFeatureFlagBitsKHX
20865 {
20866 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20867 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20868 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20869 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20870 };
20871
20872 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20873
20874 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20875 {
20876 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20877 }
20878
20879 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20880 {
20881 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20882 }
20883
20884 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20885 {
20886 enum
20887 {
20888 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20889 };
20890 };
20891
20892 enum class MemoryAllocateFlagBitsKHX
20893 {
20894 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20895 };
20896
20897 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20898
20899 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20900 {
20901 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20902 }
20903
20904 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20905 {
20906 return ~( MemoryAllocateFlagsKHX( bits ) );
20907 }
20908
20909 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20910 {
20911 enum
20912 {
20913 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20914 };
20915 };
20916
20917 struct MemoryAllocateFlagsInfoKHX
20918 {
20919 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20920 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20921 , pNext( nullptr )
20922 , flags( flags_ )
20923 , deviceMask( deviceMask_ )
20924 {
20925 }
20926
20927 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20928 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020929 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020930 }
20931
20932 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20933 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020934 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070020935 return *this;
20936 }
Mark Young0f183a82017-02-28 09:58:04 -070020937 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20938 {
20939 pNext = pNext_;
20940 return *this;
20941 }
20942
20943 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20944 {
20945 flags = flags_;
20946 return *this;
20947 }
20948
20949 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20950 {
20951 deviceMask = deviceMask_;
20952 return *this;
20953 }
20954
20955 operator const VkMemoryAllocateFlagsInfoKHX&() const
20956 {
20957 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20958 }
20959
20960 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20961 {
20962 return ( sType == rhs.sType )
20963 && ( pNext == rhs.pNext )
20964 && ( flags == rhs.flags )
20965 && ( deviceMask == rhs.deviceMask );
20966 }
20967
20968 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
20969 {
20970 return !operator==( rhs );
20971 }
20972
20973 private:
20974 StructureType sType;
20975
20976 public:
20977 const void* pNext;
20978 MemoryAllocateFlagsKHX flags;
20979 uint32_t deviceMask;
20980 };
20981 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
20982
20983 enum class DeviceGroupPresentModeFlagBitsKHX
20984 {
20985 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
20986 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
20987 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
20988 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
20989 };
20990
20991 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
20992
20993 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
20994 {
20995 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
20996 }
20997
20998 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
20999 {
21000 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
21001 }
21002
21003 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
21004 {
21005 enum
21006 {
21007 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
21008 };
21009 };
21010
21011 struct DeviceGroupPresentCapabilitiesKHX
21012 {
21013 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
21014 {
21015 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
21016 }
21017
21018 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
21019 {
21020 return ( sType == rhs.sType )
21021 && ( pNext == rhs.pNext )
21022 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
21023 && ( modes == rhs.modes );
21024 }
21025
21026 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
21027 {
21028 return !operator==( rhs );
21029 }
21030
21031 private:
21032 StructureType sType;
21033
21034 public:
21035 const void* pNext;
21036 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
21037 DeviceGroupPresentModeFlagsKHX modes;
21038 };
21039 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
21040
21041 struct DeviceGroupPresentInfoKHX
21042 {
21043 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
21044 : sType( StructureType::eDeviceGroupPresentInfoKHX )
21045 , pNext( nullptr )
21046 , swapchainCount( swapchainCount_ )
21047 , pDeviceMasks( pDeviceMasks_ )
21048 , mode( mode_ )
21049 {
21050 }
21051
21052 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
21053 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021054 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021055 }
21056
21057 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
21058 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021059 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021060 return *this;
21061 }
Mark Young0f183a82017-02-28 09:58:04 -070021062 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
21063 {
21064 pNext = pNext_;
21065 return *this;
21066 }
21067
21068 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
21069 {
21070 swapchainCount = swapchainCount_;
21071 return *this;
21072 }
21073
21074 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
21075 {
21076 pDeviceMasks = pDeviceMasks_;
21077 return *this;
21078 }
21079
21080 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
21081 {
21082 mode = mode_;
21083 return *this;
21084 }
21085
21086 operator const VkDeviceGroupPresentInfoKHX&() const
21087 {
21088 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
21089 }
21090
21091 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
21092 {
21093 return ( sType == rhs.sType )
21094 && ( pNext == rhs.pNext )
21095 && ( swapchainCount == rhs.swapchainCount )
21096 && ( pDeviceMasks == rhs.pDeviceMasks )
21097 && ( mode == rhs.mode );
21098 }
21099
21100 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
21101 {
21102 return !operator==( rhs );
21103 }
21104
21105 private:
21106 StructureType sType;
21107
21108 public:
21109 const void* pNext;
21110 uint32_t swapchainCount;
21111 const uint32_t* pDeviceMasks;
21112 DeviceGroupPresentModeFlagBitsKHX mode;
21113 };
21114 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
21115
21116 struct DeviceGroupSwapchainCreateInfoKHX
21117 {
21118 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
21119 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
21120 , pNext( nullptr )
21121 , modes( modes_ )
21122 {
21123 }
21124
21125 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
21126 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021127 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021128 }
21129
21130 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
21131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021132 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070021133 return *this;
21134 }
Mark Young0f183a82017-02-28 09:58:04 -070021135 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
21136 {
21137 pNext = pNext_;
21138 return *this;
21139 }
21140
21141 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
21142 {
21143 modes = modes_;
21144 return *this;
21145 }
21146
21147 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
21148 {
21149 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
21150 }
21151
21152 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21153 {
21154 return ( sType == rhs.sType )
21155 && ( pNext == rhs.pNext )
21156 && ( modes == rhs.modes );
21157 }
21158
21159 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21160 {
21161 return !operator==( rhs );
21162 }
21163
21164 private:
21165 StructureType sType;
21166
21167 public:
21168 const void* pNext;
21169 DeviceGroupPresentModeFlagsKHX modes;
21170 };
21171 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
21172
21173 enum class SwapchainCreateFlagBitsKHR
21174 {
21175 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
21176 };
21177
21178 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
21179
21180 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
21181 {
21182 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
21183 }
21184
21185 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
21186 {
21187 return ~( SwapchainCreateFlagsKHR( bits ) );
21188 }
21189
21190 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
21191 {
21192 enum
21193 {
21194 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
21195 };
21196 };
21197
21198 struct SwapchainCreateInfoKHR
21199 {
21200 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() )
21201 : sType( StructureType::eSwapchainCreateInfoKHR )
21202 , pNext( nullptr )
21203 , flags( flags_ )
21204 , surface( surface_ )
21205 , minImageCount( minImageCount_ )
21206 , imageFormat( imageFormat_ )
21207 , imageColorSpace( imageColorSpace_ )
21208 , imageExtent( imageExtent_ )
21209 , imageArrayLayers( imageArrayLayers_ )
21210 , imageUsage( imageUsage_ )
21211 , imageSharingMode( imageSharingMode_ )
21212 , queueFamilyIndexCount( queueFamilyIndexCount_ )
21213 , pQueueFamilyIndices( pQueueFamilyIndices_ )
21214 , preTransform( preTransform_ )
21215 , compositeAlpha( compositeAlpha_ )
21216 , presentMode( presentMode_ )
21217 , clipped( clipped_ )
21218 , oldSwapchain( oldSwapchain_ )
21219 {
21220 }
21221
21222 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
21223 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021224 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021225 }
21226
21227 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
21228 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021229 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021230 return *this;
21231 }
Mark Young0f183a82017-02-28 09:58:04 -070021232 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
21233 {
21234 pNext = pNext_;
21235 return *this;
21236 }
21237
21238 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
21239 {
21240 flags = flags_;
21241 return *this;
21242 }
21243
21244 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
21245 {
21246 surface = surface_;
21247 return *this;
21248 }
21249
21250 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
21251 {
21252 minImageCount = minImageCount_;
21253 return *this;
21254 }
21255
21256 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
21257 {
21258 imageFormat = imageFormat_;
21259 return *this;
21260 }
21261
21262 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
21263 {
21264 imageColorSpace = imageColorSpace_;
21265 return *this;
21266 }
21267
21268 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
21269 {
21270 imageExtent = imageExtent_;
21271 return *this;
21272 }
21273
21274 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
21275 {
21276 imageArrayLayers = imageArrayLayers_;
21277 return *this;
21278 }
21279
21280 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
21281 {
21282 imageUsage = imageUsage_;
21283 return *this;
21284 }
21285
21286 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
21287 {
21288 imageSharingMode = imageSharingMode_;
21289 return *this;
21290 }
21291
21292 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
21293 {
21294 queueFamilyIndexCount = queueFamilyIndexCount_;
21295 return *this;
21296 }
21297
21298 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
21299 {
21300 pQueueFamilyIndices = pQueueFamilyIndices_;
21301 return *this;
21302 }
21303
21304 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
21305 {
21306 preTransform = preTransform_;
21307 return *this;
21308 }
21309
21310 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
21311 {
21312 compositeAlpha = compositeAlpha_;
21313 return *this;
21314 }
21315
21316 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
21317 {
21318 presentMode = presentMode_;
21319 return *this;
21320 }
21321
21322 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
21323 {
21324 clipped = clipped_;
21325 return *this;
21326 }
21327
21328 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
21329 {
21330 oldSwapchain = oldSwapchain_;
21331 return *this;
21332 }
21333
21334 operator const VkSwapchainCreateInfoKHR&() const
21335 {
21336 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
21337 }
21338
21339 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21340 {
21341 return ( sType == rhs.sType )
21342 && ( pNext == rhs.pNext )
21343 && ( flags == rhs.flags )
21344 && ( surface == rhs.surface )
21345 && ( minImageCount == rhs.minImageCount )
21346 && ( imageFormat == rhs.imageFormat )
21347 && ( imageColorSpace == rhs.imageColorSpace )
21348 && ( imageExtent == rhs.imageExtent )
21349 && ( imageArrayLayers == rhs.imageArrayLayers )
21350 && ( imageUsage == rhs.imageUsage )
21351 && ( imageSharingMode == rhs.imageSharingMode )
21352 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21353 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21354 && ( preTransform == rhs.preTransform )
21355 && ( compositeAlpha == rhs.compositeAlpha )
21356 && ( presentMode == rhs.presentMode )
21357 && ( clipped == rhs.clipped )
21358 && ( oldSwapchain == rhs.oldSwapchain );
21359 }
21360
21361 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21362 {
21363 return !operator==( rhs );
21364 }
21365
21366 private:
21367 StructureType sType;
21368
21369 public:
21370 const void* pNext;
21371 SwapchainCreateFlagsKHR flags;
21372 SurfaceKHR surface;
21373 uint32_t minImageCount;
21374 Format imageFormat;
21375 ColorSpaceKHR imageColorSpace;
21376 Extent2D imageExtent;
21377 uint32_t imageArrayLayers;
21378 ImageUsageFlags imageUsage;
21379 SharingMode imageSharingMode;
21380 uint32_t queueFamilyIndexCount;
21381 const uint32_t* pQueueFamilyIndices;
21382 SurfaceTransformFlagBitsKHR preTransform;
21383 CompositeAlphaFlagBitsKHR compositeAlpha;
21384 PresentModeKHR presentMode;
21385 Bool32 clipped;
21386 SwapchainKHR oldSwapchain;
21387 };
21388 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21389
21390 enum class ViewportCoordinateSwizzleNV
21391 {
21392 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21393 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21394 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21395 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21396 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21397 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21398 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21399 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21400 };
21401
21402 struct ViewportSwizzleNV
21403 {
21404 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21405 : x( x_ )
21406 , y( y_ )
21407 , z( z_ )
21408 , w( w_ )
21409 {
21410 }
21411
21412 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21413 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021414 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021415 }
21416
21417 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21418 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021419 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021420 return *this;
21421 }
Mark Young0f183a82017-02-28 09:58:04 -070021422 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21423 {
21424 x = x_;
21425 return *this;
21426 }
21427
21428 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21429 {
21430 y = y_;
21431 return *this;
21432 }
21433
21434 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21435 {
21436 z = z_;
21437 return *this;
21438 }
21439
21440 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21441 {
21442 w = w_;
21443 return *this;
21444 }
21445
21446 operator const VkViewportSwizzleNV&() const
21447 {
21448 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21449 }
21450
21451 bool operator==( ViewportSwizzleNV const& rhs ) const
21452 {
21453 return ( x == rhs.x )
21454 && ( y == rhs.y )
21455 && ( z == rhs.z )
21456 && ( w == rhs.w );
21457 }
21458
21459 bool operator!=( ViewportSwizzleNV const& rhs ) const
21460 {
21461 return !operator==( rhs );
21462 }
21463
21464 ViewportCoordinateSwizzleNV x;
21465 ViewportCoordinateSwizzleNV y;
21466 ViewportCoordinateSwizzleNV z;
21467 ViewportCoordinateSwizzleNV w;
21468 };
21469 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21470
21471 struct PipelineViewportSwizzleStateCreateInfoNV
21472 {
21473 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21474 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21475 , pNext( nullptr )
21476 , flags( flags_ )
21477 , viewportCount( viewportCount_ )
21478 , pViewportSwizzles( pViewportSwizzles_ )
21479 {
21480 }
21481
21482 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21483 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021484 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021485 }
21486
21487 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21488 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021489 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070021490 return *this;
21491 }
Mark Young0f183a82017-02-28 09:58:04 -070021492 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21493 {
21494 pNext = pNext_;
21495 return *this;
21496 }
21497
21498 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21499 {
21500 flags = flags_;
21501 return *this;
21502 }
21503
21504 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21505 {
21506 viewportCount = viewportCount_;
21507 return *this;
21508 }
21509
21510 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21511 {
21512 pViewportSwizzles = pViewportSwizzles_;
21513 return *this;
21514 }
21515
21516 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21517 {
21518 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21519 }
21520
21521 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21522 {
21523 return ( sType == rhs.sType )
21524 && ( pNext == rhs.pNext )
21525 && ( flags == rhs.flags )
21526 && ( viewportCount == rhs.viewportCount )
21527 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21528 }
21529
21530 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21531 {
21532 return !operator==( rhs );
21533 }
21534
21535 private:
21536 StructureType sType;
21537
21538 public:
21539 const void* pNext;
21540 PipelineViewportSwizzleStateCreateFlagsNV flags;
21541 uint32_t viewportCount;
21542 const ViewportSwizzleNV* pViewportSwizzles;
21543 };
21544 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21545
21546 enum class DiscardRectangleModeEXT
21547 {
21548 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21549 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21550 };
21551
21552 struct PipelineDiscardRectangleStateCreateInfoEXT
21553 {
21554 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21555 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21556 , pNext( nullptr )
21557 , flags( flags_ )
21558 , discardRectangleMode( discardRectangleMode_ )
21559 , discardRectangleCount( discardRectangleCount_ )
21560 , pDiscardRectangles( pDiscardRectangles_ )
21561 {
21562 }
21563
21564 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21565 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021566 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070021567 }
21568
21569 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21570 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021571 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070021572 return *this;
21573 }
Mark Young0f183a82017-02-28 09:58:04 -070021574 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21575 {
21576 pNext = pNext_;
21577 return *this;
21578 }
21579
21580 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21581 {
21582 flags = flags_;
21583 return *this;
21584 }
21585
21586 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21587 {
21588 discardRectangleMode = discardRectangleMode_;
21589 return *this;
21590 }
21591
21592 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21593 {
21594 discardRectangleCount = discardRectangleCount_;
21595 return *this;
21596 }
21597
21598 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21599 {
21600 pDiscardRectangles = pDiscardRectangles_;
21601 return *this;
21602 }
21603
21604 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21605 {
21606 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21607 }
21608
21609 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21610 {
21611 return ( sType == rhs.sType )
21612 && ( pNext == rhs.pNext )
21613 && ( flags == rhs.flags )
21614 && ( discardRectangleMode == rhs.discardRectangleMode )
21615 && ( discardRectangleCount == rhs.discardRectangleCount )
21616 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21617 }
21618
21619 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21620 {
21621 return !operator==( rhs );
21622 }
21623
21624 private:
21625 StructureType sType;
21626
21627 public:
21628 const void* pNext;
21629 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21630 DiscardRectangleModeEXT discardRectangleMode;
21631 uint32_t discardRectangleCount;
21632 const Rect2D* pDiscardRectangles;
21633 };
21634 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21635
21636 enum class SubpassDescriptionFlagBits
21637 {
21638 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21639 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21640 };
21641
21642 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21643
21644 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21645 {
21646 return SubpassDescriptionFlags( bit0 ) | bit1;
21647 }
21648
21649 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21650 {
21651 return ~( SubpassDescriptionFlags( bits ) );
21652 }
21653
21654 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21655 {
21656 enum
21657 {
21658 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21659 };
21660 };
21661
21662 struct SubpassDescription
21663 {
21664 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 )
21665 : flags( flags_ )
21666 , pipelineBindPoint( pipelineBindPoint_ )
21667 , inputAttachmentCount( inputAttachmentCount_ )
21668 , pInputAttachments( pInputAttachments_ )
21669 , colorAttachmentCount( colorAttachmentCount_ )
21670 , pColorAttachments( pColorAttachments_ )
21671 , pResolveAttachments( pResolveAttachments_ )
21672 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21673 , preserveAttachmentCount( preserveAttachmentCount_ )
21674 , pPreserveAttachments( pPreserveAttachments_ )
21675 {
21676 }
21677
21678 SubpassDescription( VkSubpassDescription const & rhs )
21679 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021680 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070021681 }
21682
21683 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21684 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021685 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070021686 return *this;
21687 }
Mark Young0f183a82017-02-28 09:58:04 -070021688 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21689 {
21690 flags = flags_;
21691 return *this;
21692 }
21693
21694 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21695 {
21696 pipelineBindPoint = pipelineBindPoint_;
21697 return *this;
21698 }
21699
21700 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21701 {
21702 inputAttachmentCount = inputAttachmentCount_;
21703 return *this;
21704 }
21705
21706 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21707 {
21708 pInputAttachments = pInputAttachments_;
21709 return *this;
21710 }
21711
21712 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21713 {
21714 colorAttachmentCount = colorAttachmentCount_;
21715 return *this;
21716 }
21717
21718 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21719 {
21720 pColorAttachments = pColorAttachments_;
21721 return *this;
21722 }
21723
21724 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21725 {
21726 pResolveAttachments = pResolveAttachments_;
21727 return *this;
21728 }
21729
21730 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21731 {
21732 pDepthStencilAttachment = pDepthStencilAttachment_;
21733 return *this;
21734 }
21735
21736 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21737 {
21738 preserveAttachmentCount = preserveAttachmentCount_;
21739 return *this;
21740 }
21741
21742 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21743 {
21744 pPreserveAttachments = pPreserveAttachments_;
21745 return *this;
21746 }
21747
21748 operator const VkSubpassDescription&() const
21749 {
21750 return *reinterpret_cast<const VkSubpassDescription*>(this);
21751 }
21752
21753 bool operator==( SubpassDescription const& rhs ) const
21754 {
21755 return ( flags == rhs.flags )
21756 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21757 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21758 && ( pInputAttachments == rhs.pInputAttachments )
21759 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21760 && ( pColorAttachments == rhs.pColorAttachments )
21761 && ( pResolveAttachments == rhs.pResolveAttachments )
21762 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21763 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21764 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21765 }
21766
21767 bool operator!=( SubpassDescription const& rhs ) const
21768 {
21769 return !operator==( rhs );
21770 }
21771
21772 SubpassDescriptionFlags flags;
21773 PipelineBindPoint pipelineBindPoint;
21774 uint32_t inputAttachmentCount;
21775 const AttachmentReference* pInputAttachments;
21776 uint32_t colorAttachmentCount;
21777 const AttachmentReference* pColorAttachments;
21778 const AttachmentReference* pResolveAttachments;
21779 const AttachmentReference* pDepthStencilAttachment;
21780 uint32_t preserveAttachmentCount;
21781 const uint32_t* pPreserveAttachments;
21782 };
21783 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21784
21785 struct RenderPassCreateInfo
21786 {
21787 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 )
21788 : sType( StructureType::eRenderPassCreateInfo )
21789 , pNext( nullptr )
21790 , flags( flags_ )
21791 , attachmentCount( attachmentCount_ )
21792 , pAttachments( pAttachments_ )
21793 , subpassCount( subpassCount_ )
21794 , pSubpasses( pSubpasses_ )
21795 , dependencyCount( dependencyCount_ )
21796 , pDependencies( pDependencies_ )
21797 {
21798 }
21799
21800 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21801 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021802 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021803 }
21804
21805 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21806 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021807 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021808 return *this;
21809 }
Mark Young0f183a82017-02-28 09:58:04 -070021810 RenderPassCreateInfo& setPNext( const void* pNext_ )
21811 {
21812 pNext = pNext_;
21813 return *this;
21814 }
21815
21816 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21817 {
21818 flags = flags_;
21819 return *this;
21820 }
21821
21822 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21823 {
21824 attachmentCount = attachmentCount_;
21825 return *this;
21826 }
21827
21828 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21829 {
21830 pAttachments = pAttachments_;
21831 return *this;
21832 }
21833
21834 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21835 {
21836 subpassCount = subpassCount_;
21837 return *this;
21838 }
21839
21840 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21841 {
21842 pSubpasses = pSubpasses_;
21843 return *this;
21844 }
21845
21846 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21847 {
21848 dependencyCount = dependencyCount_;
21849 return *this;
21850 }
21851
21852 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21853 {
21854 pDependencies = pDependencies_;
21855 return *this;
21856 }
21857
21858 operator const VkRenderPassCreateInfo&() const
21859 {
21860 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21861 }
21862
21863 bool operator==( RenderPassCreateInfo const& rhs ) const
21864 {
21865 return ( sType == rhs.sType )
21866 && ( pNext == rhs.pNext )
21867 && ( flags == rhs.flags )
21868 && ( attachmentCount == rhs.attachmentCount )
21869 && ( pAttachments == rhs.pAttachments )
21870 && ( subpassCount == rhs.subpassCount )
21871 && ( pSubpasses == rhs.pSubpasses )
21872 && ( dependencyCount == rhs.dependencyCount )
21873 && ( pDependencies == rhs.pDependencies );
21874 }
21875
21876 bool operator!=( RenderPassCreateInfo const& rhs ) const
21877 {
21878 return !operator==( rhs );
21879 }
21880
21881 private:
21882 StructureType sType;
21883
21884 public:
21885 const void* pNext;
21886 RenderPassCreateFlags flags;
21887 uint32_t attachmentCount;
21888 const AttachmentDescription* pAttachments;
21889 uint32_t subpassCount;
21890 const SubpassDescription* pSubpasses;
21891 uint32_t dependencyCount;
21892 const SubpassDependency* pDependencies;
21893 };
21894 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21895
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021896 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021898 template <typename Allocator = std::allocator<LayerProperties>>
21899 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021900#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21901
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021902 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21903 {
21904 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21905 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021906#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021907 template <typename Allocator>
21908 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021909 {
21910 std::vector<LayerProperties,Allocator> properties;
21911 uint32_t propertyCount;
21912 Result result;
21913 do
21914 {
21915 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21916 if ( ( result == Result::eSuccess ) && propertyCount )
21917 {
21918 properties.resize( propertyCount );
21919 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21920 }
21921 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021922 assert( propertyCount <= properties.size() );
21923 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021924 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21925 }
21926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21927
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021928
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021929 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021931 template <typename Allocator = std::allocator<ExtensionProperties>>
21932 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021935 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21936 {
21937 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21938 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021940 template <typename Allocator>
21941 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021942 {
21943 std::vector<ExtensionProperties,Allocator> properties;
21944 uint32_t propertyCount;
21945 Result result;
21946 do
21947 {
21948 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21949 if ( ( result == Result::eSuccess ) && propertyCount )
21950 {
21951 properties.resize( propertyCount );
21952 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21953 }
21954 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021955 assert( propertyCount <= properties.size() );
21956 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021957 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
21958 }
21959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21960
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021961
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021962 // forward declarations
21963 struct CmdProcessCommandsInfoNVX;
21964
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021965 class CommandBuffer
21966 {
21967 public:
21968 CommandBuffer()
21969 : m_commandBuffer(VK_NULL_HANDLE)
21970 {}
21971
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021972 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021973 : m_commandBuffer(VK_NULL_HANDLE)
21974 {}
21975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021976 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
21977 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021978 {}
21979
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021980#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021981 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021982 {
21983 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021984 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021985 }
21986#endif
21987
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021988 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021989 {
21990 m_commandBuffer = VK_NULL_HANDLE;
21991 return *this;
21992 }
21993
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021994 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060021995 {
21996 return m_commandBuffer == rhs.m_commandBuffer;
21997 }
21998
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021999 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022000 {
22001 return m_commandBuffer != rhs.m_commandBuffer;
22002 }
22003
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022004 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022005 {
22006 return m_commandBuffer < rhs.m_commandBuffer;
22007 }
22008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022009 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022011 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022012#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22013
22014#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022015 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022016#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022017 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22019
22020#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022021 Result reset( CommandBufferResetFlags flags ) const;
22022#else
22023 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022024#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22025
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022026 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022027
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022028 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022030 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022031#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22032
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022033 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022035 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22037
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022038 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022040 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
22041
22042 void setBlendConstants( const float blendConstants[4] ) const;
22043
22044 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
22045
22046 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
22047
22048 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
22049
22050 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
22051
22052 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 -060022053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022054 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 -060022055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22056
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022057 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022058
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022059 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022061 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022064 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022066 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
22067
22068 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
22069
22070 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
22071
Mark Young0f183a82017-02-28 09:58:04 -070022072 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022073
22074 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
22075
22076 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022078 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022079#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22080
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022081 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022083 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22085
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022086 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 -060022087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022088 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22090
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022091 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022092#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022093 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22095
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022096 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022097#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022098 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22100
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022101 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22103 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022104 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022107 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022108
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022109 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022110#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022111 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22113
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022114 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022116 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022117#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22118
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022119 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022121 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022122#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22123
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022124 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022125#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022126 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022127#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22128
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022129 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022130
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022131 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
22132
22133 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 -060022134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022135 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 -060022136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22137
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022138 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 -060022139#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022140 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 -060022141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22142
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022143 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022144
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022145 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022146
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022147 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022148
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022149 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022150
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022151 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 -060022152
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022153 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22155 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022156 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22158
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022159 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022161 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22163
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022164 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022165
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022166 void endRenderPass() const;
22167
22168 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022170 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022173 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022175 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22177
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022178 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022179
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022180 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022182 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22184
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022185 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022187 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
22188
22189 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022190#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022191 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022192#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22193
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022194 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022196 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22198
Mark Young0f183a82017-02-28 09:58:04 -070022199 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
22200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22201 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
22202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22203
22204 void setDeviceMaskKHX( uint32_t deviceMask ) const;
22205
22206 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
22207
22208 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
22209
22210 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
22211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22212 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
22213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22214
22215 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
22216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22217 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
22218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22219
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022220
22221
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022222 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022223 {
22224 return m_commandBuffer;
22225 }
22226
22227 explicit operator bool() const
22228 {
22229 return m_commandBuffer != VK_NULL_HANDLE;
22230 }
22231
22232 bool operator!() const
22233 {
22234 return m_commandBuffer == VK_NULL_HANDLE;
22235 }
22236
22237 private:
22238 VkCommandBuffer m_commandBuffer;
22239 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022240
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022241 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
22242
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022243 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
22244 {
22245 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
22246 }
22247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22248 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
22249 {
22250 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
22251 return createResultValue( result, "vk::CommandBuffer::begin" );
22252 }
22253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22254
22255#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22256 VULKAN_HPP_INLINE Result CommandBuffer::end() const
22257 {
22258 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22259 }
22260#else
22261 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
22262 {
22263 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22264 return createResultValue( result, "vk::CommandBuffer::end" );
22265 }
22266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22267
22268#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22269 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
22270 {
22271 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22272 }
22273#else
22274 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
22275 {
22276 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22277 return createResultValue( result, "vk::CommandBuffer::reset" );
22278 }
22279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22280
22281 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
22282 {
22283 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
22284 }
22285
22286 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
22287 {
22288 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
22289 }
22290#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22291 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
22292 {
22293 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
22294 }
22295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22296
22297 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
22298 {
22299 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
22300 }
22301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22302 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
22303 {
22304 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
22305 }
22306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22307
22308 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
22309 {
22310 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
22311 }
22312
22313 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
22314 {
22315 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
22316 }
22317
22318 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
22319 {
22320 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
22321 }
22322
22323 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
22324 {
22325 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
22326 }
22327
22328 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
22329 {
22330 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
22331 }
22332
22333 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
22334 {
22335 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
22336 }
22337
22338 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22339 {
22340 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22341 }
22342
22343 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
22344 {
22345 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22346 }
22347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22348 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22349 {
22350 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22351 }
22352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22353
22354 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22355 {
22356 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22357 }
22358
22359 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22360 {
22361 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22362 }
22363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22364 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22365 {
22366#ifdef VULKAN_HPP_NO_EXCEPTIONS
22367 assert( buffers.size() == offsets.size() );
22368#else
22369 if ( buffers.size() != offsets.size() )
22370 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022371 throw LogicError( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022372 }
22373#endif // VULKAN_HPP_NO_EXCEPTIONS
22374 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22375 }
22376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22377
22378 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22379 {
22380 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22381 }
22382
22383 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22384 {
22385 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22386 }
22387
22388 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22389 {
22390 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22391 }
22392
22393 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22394 {
22395 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22396 }
22397
Mark Young0f183a82017-02-28 09:58:04 -070022398 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022399 {
Mark Young0f183a82017-02-28 09:58:04 -070022400 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022401 }
22402
22403 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22404 {
22405 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22406 }
22407
22408 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22409 {
22410 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22411 }
22412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22413 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22414 {
22415 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22416 }
22417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22418
22419 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22420 {
22421 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 ) );
22422 }
22423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22424 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22425 {
22426 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() ) );
22427 }
22428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22429
22430 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22431 {
22432 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 ) );
22433 }
22434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22435 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22436 {
22437 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 ) );
22438 }
22439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22440
22441 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22442 {
22443 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22444 }
22445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22446 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22447 {
22448 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22449 }
22450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22451
22452 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22453 {
22454 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22455 }
22456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22457 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22458 {
22459 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22460 }
22461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22462
22463 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22464 {
22465 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22466 }
22467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22468 template <typename T>
22469 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22470 {
22471 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22472 }
22473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22474
22475 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22476 {
22477 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22478 }
22479
22480 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22481 {
22482 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22483 }
22484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22485 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22486 {
22487 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22488 }
22489#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22490
22491 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22492 {
22493 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22494 }
22495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22496 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22497 {
22498 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22499 }
22500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22501
22502 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22503 {
22504 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22505 }
22506#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22507 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22508 {
22509 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22510 }
22511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22512
22513 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22514 {
22515 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 ) );
22516 }
22517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22518 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22519 {
22520 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() ) );
22521 }
22522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22523
22524 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22525 {
22526 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22527 }
22528
22529 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22530 {
22531 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22532 }
22533
22534 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
22535 {
22536 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 ) );
22537 }
22538#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22539 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
22540 {
22541 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() ) );
22542 }
22543#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22544
22545 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
22546 {
22547 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 ) );
22548 }
22549#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22550 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
22551 {
22552 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() ) );
22553 }
22554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22555
22556 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22557 {
22558 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22559 }
22560
22561 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22562 {
22563 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22564 }
22565
22566 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22567 {
22568 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22569 }
22570
22571 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22572 {
22573 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22574 }
22575
22576 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22577 {
22578 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22579 }
22580
22581 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22582 {
22583 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22584 }
22585#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22586 template <typename T>
22587 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22588 {
22589 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22590 }
22591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22592
22593 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22594 {
22595 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22596 }
22597#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22598 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22599 {
22600 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22601 }
22602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22603
22604 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22605 {
22606 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22607 }
22608
22609 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22610 {
22611 vkCmdEndRenderPass( m_commandBuffer );
22612 }
22613
22614 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22615 {
22616 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22617 }
22618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22619 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22620 {
22621 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22622 }
22623#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22624
22625 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22626 {
22627 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22628 }
22629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22630 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22631 {
22632 DebugMarkerMarkerInfoEXT markerInfo;
22633 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22634 return markerInfo;
22635 }
22636#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22637
22638 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22639 {
22640 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22641 }
22642
22643 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22644 {
22645 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22646 }
22647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22648 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22649 {
22650 DebugMarkerMarkerInfoEXT markerInfo;
22651 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22652 return markerInfo;
22653 }
22654#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22655
22656 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22657 {
22658 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22659 }
22660
22661 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22662 {
22663 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22664 }
22665
22666 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22667 {
22668 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22669 }
22670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22671 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22672 {
22673 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22674 }
22675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22676
22677 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22678 {
22679 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22680 }
22681#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22682 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22683 {
22684 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22685 }
22686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022687
22688 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22689 {
22690 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22691 }
22692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22693 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22694 {
22695 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22696 }
22697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22698
22699 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22700 {
22701 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22702 }
22703
22704 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
22705 {
22706 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22707 }
22708
22709 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22710 {
22711 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22712 }
22713
22714 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22715 {
22716 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22717 }
22718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22719 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22720 {
22721 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22722 }
22723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22724
22725 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22726 {
22727 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22728 }
22729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22730 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22731 {
22732 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22733 }
22734#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022735
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022736 struct SubmitInfo
22737 {
22738 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 )
22739 : sType( StructureType::eSubmitInfo )
22740 , pNext( nullptr )
22741 , waitSemaphoreCount( waitSemaphoreCount_ )
22742 , pWaitSemaphores( pWaitSemaphores_ )
22743 , pWaitDstStageMask( pWaitDstStageMask_ )
22744 , commandBufferCount( commandBufferCount_ )
22745 , pCommandBuffers( pCommandBuffers_ )
22746 , signalSemaphoreCount( signalSemaphoreCount_ )
22747 , pSignalSemaphores( pSignalSemaphores_ )
22748 {
22749 }
22750
22751 SubmitInfo( VkSubmitInfo const & rhs )
22752 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022753 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022754 }
22755
22756 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22757 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022758 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022759 return *this;
22760 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022761 SubmitInfo& setPNext( const void* pNext_ )
22762 {
22763 pNext = pNext_;
22764 return *this;
22765 }
22766
22767 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22768 {
22769 waitSemaphoreCount = waitSemaphoreCount_;
22770 return *this;
22771 }
22772
22773 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22774 {
22775 pWaitSemaphores = pWaitSemaphores_;
22776 return *this;
22777 }
22778
22779 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22780 {
22781 pWaitDstStageMask = pWaitDstStageMask_;
22782 return *this;
22783 }
22784
22785 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22786 {
22787 commandBufferCount = commandBufferCount_;
22788 return *this;
22789 }
22790
22791 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22792 {
22793 pCommandBuffers = pCommandBuffers_;
22794 return *this;
22795 }
22796
22797 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22798 {
22799 signalSemaphoreCount = signalSemaphoreCount_;
22800 return *this;
22801 }
22802
22803 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22804 {
22805 pSignalSemaphores = pSignalSemaphores_;
22806 return *this;
22807 }
22808
22809 operator const VkSubmitInfo&() const
22810 {
22811 return *reinterpret_cast<const VkSubmitInfo*>(this);
22812 }
22813
22814 bool operator==( SubmitInfo const& rhs ) const
22815 {
22816 return ( sType == rhs.sType )
22817 && ( pNext == rhs.pNext )
22818 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22819 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22820 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22821 && ( commandBufferCount == rhs.commandBufferCount )
22822 && ( pCommandBuffers == rhs.pCommandBuffers )
22823 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22824 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22825 }
22826
22827 bool operator!=( SubmitInfo const& rhs ) const
22828 {
22829 return !operator==( rhs );
22830 }
22831
22832 private:
22833 StructureType sType;
22834
22835 public:
22836 const void* pNext;
22837 uint32_t waitSemaphoreCount;
22838 const Semaphore* pWaitSemaphores;
22839 const PipelineStageFlags* pWaitDstStageMask;
22840 uint32_t commandBufferCount;
22841 const CommandBuffer* pCommandBuffers;
22842 uint32_t signalSemaphoreCount;
22843 const Semaphore* pSignalSemaphores;
22844 };
22845 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22846
22847 class Queue
22848 {
22849 public:
22850 Queue()
22851 : m_queue(VK_NULL_HANDLE)
22852 {}
22853
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022854 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022855 : m_queue(VK_NULL_HANDLE)
22856 {}
22857
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022858 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
22859 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022860 {}
22861
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022862#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022863 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022864 {
22865 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022866 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022867 }
22868#endif
22869
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022870 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022871 {
22872 m_queue = VK_NULL_HANDLE;
22873 return *this;
22874 }
22875
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022876 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022877 {
22878 return m_queue == rhs.m_queue;
22879 }
22880
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022881 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022882 {
22883 return m_queue != rhs.m_queue;
22884 }
22885
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022886 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060022887 {
22888 return m_queue < rhs.m_queue;
22889 }
22890
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022891 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022892#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022893 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022894#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22895
22896#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022897 Result waitIdle() const;
22898#else
22899 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022900#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22901
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022902 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022903#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022904 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22906
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022907 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022908#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022909 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022910#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22911
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022912
22913
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022914 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022915 {
22916 return m_queue;
22917 }
22918
22919 explicit operator bool() const
22920 {
22921 return m_queue != VK_NULL_HANDLE;
22922 }
22923
22924 bool operator!() const
22925 {
22926 return m_queue == VK_NULL_HANDLE;
22927 }
22928
22929 private:
22930 VkQueue m_queue;
22931 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022932
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022933 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22934
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022935 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22936 {
22937 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22938 }
22939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22940 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22941 {
22942 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22943 return createResultValue( result, "vk::Queue::submit" );
22944 }
22945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22946
22947#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22948 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22949 {
22950 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22951 }
22952#else
22953 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22954 {
22955 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22956 return createResultValue( result, "vk::Queue::waitIdle" );
22957 }
22958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22959
22960 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
22961 {
22962 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
22963 }
22964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22965 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
22966 {
22967 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
22968 return createResultValue( result, "vk::Queue::bindSparse" );
22969 }
22970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22971
22972 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
22973 {
22974 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
22975 }
22976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22977 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
22978 {
22979 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
22980 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
22981 }
22982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022984#ifndef VULKAN_HPP_NO_SMART_HANDLE
22985 class BufferDeleter;
22986 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
22987 class BufferViewDeleter;
22988 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
22989 class CommandBufferDeleter;
22990 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
22991 class CommandPoolDeleter;
22992 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
22993 class DescriptorPoolDeleter;
22994 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
22995 class DescriptorSetDeleter;
22996 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
22997 class DescriptorSetLayoutDeleter;
22998 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070022999 class DescriptorUpdateTemplateKHRDeleter;
23000 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023001 class DeviceMemoryDeleter;
23002 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
23003 class EventDeleter;
23004 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
23005 class FenceDeleter;
23006 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
23007 class FramebufferDeleter;
23008 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
23009 class ImageDeleter;
23010 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
23011 class ImageViewDeleter;
23012 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
23013 class IndirectCommandsLayoutNVXDeleter;
23014 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
23015 class ObjectTableNVXDeleter;
23016 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
23017 class PipelineDeleter;
23018 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
23019 class PipelineCacheDeleter;
23020 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
23021 class PipelineLayoutDeleter;
23022 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
23023 class QueryPoolDeleter;
23024 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
23025 class RenderPassDeleter;
23026 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
23027 class SamplerDeleter;
23028 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
23029 class SemaphoreDeleter;
23030 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
23031 class ShaderModuleDeleter;
23032 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
23033 class SwapchainKHRDeleter;
23034 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
23035#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23036
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023037 class Device
23038 {
23039 public:
23040 Device()
23041 : m_device(VK_NULL_HANDLE)
23042 {}
23043
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070023044 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023045 : m_device(VK_NULL_HANDLE)
23046 {}
23047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023048 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
23049 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023050 {}
23051
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023052#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023053 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023054 {
23055 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023056 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023057 }
23058#endif
23059
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023060 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023061 {
23062 m_device = VK_NULL_HANDLE;
23063 return *this;
23064 }
23065
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023066 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023067 {
23068 return m_device == rhs.m_device;
23069 }
23070
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023071 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023072 {
23073 return m_device != rhs.m_device;
23074 }
23075
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023076 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060023077 {
23078 return m_device < rhs.m_device;
23079 }
23080
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023081 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023083 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23085
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023086 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023088 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23090
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023091 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023092#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023093 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23095
23096#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023097 Result waitIdle() const;
23098#else
23099 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23101
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023102 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023104 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23105#ifndef VULKAN_HPP_NO_SMART_HANDLE
23106 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23107#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23109
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023110 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023112 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23114
23115 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
23116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23117 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
23118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23119
23120 void unmapMemory( DeviceMemory memory ) const;
23121
23122 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
23123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23124 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
23125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23126
23127 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
23128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23129 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
23130#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23131
23132 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
23133#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23134 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
23135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23136
23137 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
23138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23139 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23141
23142#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023143 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23144#else
23145 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023147
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023148 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023150 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23152
23153#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023154 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
23155#else
23156 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23158
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023159 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023161 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
23162 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23164
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023165 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023167 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23168#ifndef VULKAN_HPP_NO_SMART_HANDLE
23169 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23170#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023173 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023175 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23177
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023178 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023180 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23182
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023183 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023184
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023185 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023186#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023187 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
23188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23189
23190 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
23191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23192 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23193#ifndef VULKAN_HPP_NO_SMART_HANDLE
23194 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23195#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23197
23198 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
23199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23200 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23202
23203 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
23204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23205 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23206#ifndef VULKAN_HPP_NO_SMART_HANDLE
23207 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23208#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23210
23211 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
23212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23213 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23215
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023216 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023217
23218#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023219 Result setEvent( Event event ) const;
23220#else
23221 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23223
23224#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023225 Result resetEvent( Event event ) const;
23226#else
23227 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23229
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023230 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023231#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023232 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23233#ifndef VULKAN_HPP_NO_SMART_HANDLE
23234 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23235#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23237
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023238 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023240 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23242
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023243 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 -060023244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23245 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023246 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 -060023247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23248
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023249 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023251 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23252#ifndef VULKAN_HPP_NO_SMART_HANDLE
23253 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23254#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023255#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23256
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023257 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023258#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023259 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023260#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23261
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023262 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023264 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23265#ifndef VULKAN_HPP_NO_SMART_HANDLE
23266 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23267#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23269
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023270 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023272 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23274
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023275 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023277 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23278#ifndef VULKAN_HPP_NO_SMART_HANDLE
23279 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23280#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23282
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023283 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023285 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23287
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023288 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023290 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23292
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023293 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023294#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023295 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23296#ifndef VULKAN_HPP_NO_SMART_HANDLE
23297 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23298#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23300
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023301 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023303 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023304#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23305
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023306 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023307#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023308 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23309#ifndef VULKAN_HPP_NO_SMART_HANDLE
23310 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23311#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23313
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023314 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023316 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023317#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23318
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023319 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023320#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023321 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23322#ifndef VULKAN_HPP_NO_SMART_HANDLE
23323 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23324#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23326
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023327 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023328#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023329 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23331
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023332 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023334 template <typename Allocator = std::allocator<uint8_t>>
23335 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23337
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023338 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023339#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023340 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23342
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023343 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023345 template <typename Allocator = std::allocator<Pipeline>>
23346 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23347 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23348#ifndef VULKAN_HPP_NO_SMART_HANDLE
23349 template <typename Allocator = std::allocator<Pipeline>>
23350 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23351 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23352#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023353#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23354
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023355 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023356#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023357 template <typename Allocator = std::allocator<Pipeline>>
23358 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23359 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23360#ifndef VULKAN_HPP_NO_SMART_HANDLE
23361 template <typename Allocator = std::allocator<Pipeline>>
23362 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23363 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23364#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23366
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023367 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023369 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023370#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23371
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023372 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023374 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23375#ifndef VULKAN_HPP_NO_SMART_HANDLE
23376 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23377#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23379
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023380 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023381#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023382 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023383#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23384
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023385 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023387 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23388#ifndef VULKAN_HPP_NO_SMART_HANDLE
23389 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23390#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23392
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023393 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023394#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023395 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023396#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23397
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023398 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023400 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23401#ifndef VULKAN_HPP_NO_SMART_HANDLE
23402 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23403#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23405
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023406 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023408 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23410
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023411 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023413 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23414#ifndef VULKAN_HPP_NO_SMART_HANDLE
23415 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23416#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23418
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023419 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023421 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23423
23424#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023425 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23426#else
23427 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23429
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023430 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023432 template <typename Allocator = std::allocator<DescriptorSet>>
23433 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23434#ifndef VULKAN_HPP_NO_SMART_HANDLE
23435 template <typename Allocator = std::allocator<DescriptorSet>>
23436 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23437#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023438#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23439
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023440 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023441#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023442 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023443#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23444
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023445 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023447 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23449
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023450 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023451#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023452 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23453#ifndef VULKAN_HPP_NO_SMART_HANDLE
23454 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23455#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23457
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023458 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023460 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23462
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023463 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023465 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23466#ifndef VULKAN_HPP_NO_SMART_HANDLE
23467 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23468#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023469#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23470
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023471 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023473 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023474#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23475
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023476 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023478 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023479#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23480
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023481 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023483 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23484#ifndef VULKAN_HPP_NO_SMART_HANDLE
23485 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23486#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23488
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023489 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023490#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023491 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23493
23494#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023495 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23496#else
23497 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023498#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23499
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023500 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023502 template <typename Allocator = std::allocator<CommandBuffer>>
23503 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23504#ifndef VULKAN_HPP_NO_SMART_HANDLE
23505 template <typename Allocator = std::allocator<CommandBuffer>>
23506 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23507#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23509
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023510 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023512 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023513#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23514
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023515 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023516#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023517 template <typename Allocator = std::allocator<SwapchainKHR>>
23518 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23519 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23520#ifndef VULKAN_HPP_NO_SMART_HANDLE
23521 template <typename Allocator = std::allocator<SwapchainKHR>>
23522 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23523 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23524#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023525#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23526
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023527 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023529 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23530#ifndef VULKAN_HPP_NO_SMART_HANDLE
23531 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23532#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23534
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023535 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023537 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23539
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023540 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023541#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023542 template <typename Allocator = std::allocator<Image>>
23543 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23545
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023546 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023547#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023548 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23550
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023551 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023553 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23555
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023556 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023557#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023558 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23560
Lenny Komow6501c122016-08-31 15:03:49 -060023561#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023562 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23564 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23565#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023566#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23567
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023568 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023570 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23571#ifndef VULKAN_HPP_NO_SMART_HANDLE
23572 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23573#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23575
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023576 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023578 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23580
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023581 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023582#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023583 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23584#ifndef VULKAN_HPP_NO_SMART_HANDLE
23585 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23586#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023587#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23588
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023589 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023591 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23593
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023594 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023596 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023597#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23598
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023599 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023601 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23603
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023604#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023605 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023606#else
23607 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023609
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023610#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023611 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23613 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023615#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023616
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023617#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023618 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23619#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23620 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23621#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023622#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023623
23624 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23626 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23628
23629 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23630#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23631 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23633
23634#ifdef VK_USE_PLATFORM_WIN32_KHX
23635 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23637 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23639#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23640
23641#ifdef VK_USE_PLATFORM_WIN32_KHX
23642 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23644 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23646#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23647
23648 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23650 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23652
23653 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23655 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23656#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23657
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023658 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023660 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23662
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023663 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023664#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023665 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023666#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23667
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023668 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023670 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23672
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023673 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023675 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23677
Mark Young0f183a82017-02-28 09:58:04 -070023678 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23679#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23680 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23682
23683 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23684#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23685 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23687
23688 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23690 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23691#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23692
23693 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23695 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23697
23698 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23700 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23702
23703 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23704#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23705 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23707
23708 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23709#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23710 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23711#ifndef VULKAN_HPP_NO_SMART_HANDLE
23712 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23713#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23715
23716 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23717#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23718 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23719#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23720
23721 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23722
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023723 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23724#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23725 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23727
Mark Lobodzinski54385432017-05-15 10:27:52 -060023728 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
23729
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023730 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23731#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23732 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23734
23735 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23736#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23737 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23738 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23740
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023741
23742
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023743 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023744 {
23745 return m_device;
23746 }
23747
23748 explicit operator bool() const
23749 {
23750 return m_device != VK_NULL_HANDLE;
23751 }
23752
23753 bool operator!() const
23754 {
23755 return m_device == VK_NULL_HANDLE;
23756 }
23757
23758 private:
23759 VkDevice m_device;
23760 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023761
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023762 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23763
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023764#ifndef VULKAN_HPP_NO_SMART_HANDLE
23765 class BufferDeleter
23766 {
23767 public:
23768 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23769 : m_device( device )
23770 , m_allocator( allocator )
23771 {}
23772
23773 void operator()( Buffer buffer )
23774 {
23775 m_device.destroyBuffer( buffer, m_allocator );
23776 }
23777
23778 private:
23779 Device m_device;
23780 Optional<const AllocationCallbacks> m_allocator;
23781 };
23782
23783 class BufferViewDeleter
23784 {
23785 public:
23786 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23787 : m_device( device )
23788 , m_allocator( allocator )
23789 {}
23790
23791 void operator()( BufferView bufferView )
23792 {
23793 m_device.destroyBufferView( bufferView, m_allocator );
23794 }
23795
23796 private:
23797 Device m_device;
23798 Optional<const AllocationCallbacks> m_allocator;
23799 };
23800
23801 class CommandBufferDeleter
23802 {
23803 public:
23804 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23805 : m_device( device )
23806 , m_commandPool( commandPool )
23807 {}
23808
23809 void operator()( CommandBuffer commandBuffer )
23810 {
23811 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23812 }
23813
23814 private:
23815 Device m_device;
23816 CommandPool m_commandPool;
23817 };
23818
23819 class CommandPoolDeleter
23820 {
23821 public:
23822 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23823 : m_device( device )
23824 , m_allocator( allocator )
23825 {}
23826
23827 void operator()( CommandPool commandPool )
23828 {
23829 m_device.destroyCommandPool( commandPool, m_allocator );
23830 }
23831
23832 private:
23833 Device m_device;
23834 Optional<const AllocationCallbacks> m_allocator;
23835 };
23836
23837 class DescriptorPoolDeleter
23838 {
23839 public:
23840 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23841 : m_device( device )
23842 , m_allocator( allocator )
23843 {}
23844
23845 void operator()( DescriptorPool descriptorPool )
23846 {
23847 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23848 }
23849
23850 private:
23851 Device m_device;
23852 Optional<const AllocationCallbacks> m_allocator;
23853 };
23854
23855 class DescriptorSetDeleter
23856 {
23857 public:
23858 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23859 : m_device( device )
23860 , m_descriptorPool( descriptorPool )
23861 {}
23862
23863 void operator()( DescriptorSet descriptorSet )
23864 {
23865 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23866 }
23867
23868 private:
23869 Device m_device;
23870 DescriptorPool m_descriptorPool;
23871 };
23872
23873 class DescriptorSetLayoutDeleter
23874 {
23875 public:
23876 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23877 : m_device( device )
23878 , m_allocator( allocator )
23879 {}
23880
23881 void operator()( DescriptorSetLayout descriptorSetLayout )
23882 {
23883 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23884 }
23885
23886 private:
23887 Device m_device;
23888 Optional<const AllocationCallbacks> m_allocator;
23889 };
23890
Mark Young0f183a82017-02-28 09:58:04 -070023891 class DescriptorUpdateTemplateKHRDeleter
23892 {
23893 public:
23894 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23895 : m_device( device )
23896 , m_allocator( allocator )
23897 {}
23898
23899 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23900 {
23901 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23902 }
23903
23904 private:
23905 Device m_device;
23906 Optional<const AllocationCallbacks> m_allocator;
23907 };
23908
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023909 class DeviceMemoryDeleter
23910 {
23911 public:
23912 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23913 : m_device( device )
23914 , m_allocator( allocator )
23915 {}
23916
23917 void operator()( DeviceMemory deviceMemory )
23918 {
23919 m_device.freeMemory( deviceMemory, m_allocator );
23920 }
23921
23922 private:
23923 Device m_device;
23924 Optional<const AllocationCallbacks> m_allocator;
23925 };
23926
23927 class EventDeleter
23928 {
23929 public:
23930 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23931 : m_device( device )
23932 , m_allocator( allocator )
23933 {}
23934
23935 void operator()( Event event )
23936 {
23937 m_device.destroyEvent( event, m_allocator );
23938 }
23939
23940 private:
23941 Device m_device;
23942 Optional<const AllocationCallbacks> m_allocator;
23943 };
23944
23945 class FenceDeleter
23946 {
23947 public:
23948 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23949 : m_device( device )
23950 , m_allocator( allocator )
23951 {}
23952
23953 void operator()( Fence fence )
23954 {
23955 m_device.destroyFence( fence, m_allocator );
23956 }
23957
23958 private:
23959 Device m_device;
23960 Optional<const AllocationCallbacks> m_allocator;
23961 };
23962
23963 class FramebufferDeleter
23964 {
23965 public:
23966 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23967 : m_device( device )
23968 , m_allocator( allocator )
23969 {}
23970
23971 void operator()( Framebuffer framebuffer )
23972 {
23973 m_device.destroyFramebuffer( framebuffer, m_allocator );
23974 }
23975
23976 private:
23977 Device m_device;
23978 Optional<const AllocationCallbacks> m_allocator;
23979 };
23980
23981 class ImageDeleter
23982 {
23983 public:
23984 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23985 : m_device( device )
23986 , m_allocator( allocator )
23987 {}
23988
23989 void operator()( Image image )
23990 {
23991 m_device.destroyImage( image, m_allocator );
23992 }
23993
23994 private:
23995 Device m_device;
23996 Optional<const AllocationCallbacks> m_allocator;
23997 };
23998
23999 class ImageViewDeleter
24000 {
24001 public:
24002 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24003 : m_device( device )
24004 , m_allocator( allocator )
24005 {}
24006
24007 void operator()( ImageView imageView )
24008 {
24009 m_device.destroyImageView( imageView, m_allocator );
24010 }
24011
24012 private:
24013 Device m_device;
24014 Optional<const AllocationCallbacks> m_allocator;
24015 };
24016
24017 class IndirectCommandsLayoutNVXDeleter
24018 {
24019 public:
24020 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24021 : m_device( device )
24022 , m_allocator( allocator )
24023 {}
24024
24025 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
24026 {
24027 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
24028 }
24029
24030 private:
24031 Device m_device;
24032 Optional<const AllocationCallbacks> m_allocator;
24033 };
24034
24035 class ObjectTableNVXDeleter
24036 {
24037 public:
24038 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24039 : m_device( device )
24040 , m_allocator( allocator )
24041 {}
24042
24043 void operator()( ObjectTableNVX objectTableNVX )
24044 {
24045 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
24046 }
24047
24048 private:
24049 Device m_device;
24050 Optional<const AllocationCallbacks> m_allocator;
24051 };
24052
24053 class PipelineDeleter
24054 {
24055 public:
24056 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24057 : m_device( device )
24058 , m_allocator( allocator )
24059 {}
24060
24061 void operator()( Pipeline pipeline )
24062 {
24063 m_device.destroyPipeline( pipeline, m_allocator );
24064 }
24065
24066 private:
24067 Device m_device;
24068 Optional<const AllocationCallbacks> m_allocator;
24069 };
24070
24071 class PipelineCacheDeleter
24072 {
24073 public:
24074 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24075 : m_device( device )
24076 , m_allocator( allocator )
24077 {}
24078
24079 void operator()( PipelineCache pipelineCache )
24080 {
24081 m_device.destroyPipelineCache( pipelineCache, m_allocator );
24082 }
24083
24084 private:
24085 Device m_device;
24086 Optional<const AllocationCallbacks> m_allocator;
24087 };
24088
24089 class PipelineLayoutDeleter
24090 {
24091 public:
24092 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24093 : m_device( device )
24094 , m_allocator( allocator )
24095 {}
24096
24097 void operator()( PipelineLayout pipelineLayout )
24098 {
24099 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
24100 }
24101
24102 private:
24103 Device m_device;
24104 Optional<const AllocationCallbacks> m_allocator;
24105 };
24106
24107 class QueryPoolDeleter
24108 {
24109 public:
24110 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24111 : m_device( device )
24112 , m_allocator( allocator )
24113 {}
24114
24115 void operator()( QueryPool queryPool )
24116 {
24117 m_device.destroyQueryPool( queryPool, m_allocator );
24118 }
24119
24120 private:
24121 Device m_device;
24122 Optional<const AllocationCallbacks> m_allocator;
24123 };
24124
24125 class RenderPassDeleter
24126 {
24127 public:
24128 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24129 : m_device( device )
24130 , m_allocator( allocator )
24131 {}
24132
24133 void operator()( RenderPass renderPass )
24134 {
24135 m_device.destroyRenderPass( renderPass, m_allocator );
24136 }
24137
24138 private:
24139 Device m_device;
24140 Optional<const AllocationCallbacks> m_allocator;
24141 };
24142
24143 class SamplerDeleter
24144 {
24145 public:
24146 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24147 : m_device( device )
24148 , m_allocator( allocator )
24149 {}
24150
24151 void operator()( Sampler sampler )
24152 {
24153 m_device.destroySampler( sampler, m_allocator );
24154 }
24155
24156 private:
24157 Device m_device;
24158 Optional<const AllocationCallbacks> m_allocator;
24159 };
24160
24161 class SemaphoreDeleter
24162 {
24163 public:
24164 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24165 : m_device( device )
24166 , m_allocator( allocator )
24167 {}
24168
24169 void operator()( Semaphore semaphore )
24170 {
24171 m_device.destroySemaphore( semaphore, m_allocator );
24172 }
24173
24174 private:
24175 Device m_device;
24176 Optional<const AllocationCallbacks> m_allocator;
24177 };
24178
24179 class ShaderModuleDeleter
24180 {
24181 public:
24182 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24183 : m_device( device )
24184 , m_allocator( allocator )
24185 {}
24186
24187 void operator()( ShaderModule shaderModule )
24188 {
24189 m_device.destroyShaderModule( shaderModule, m_allocator );
24190 }
24191
24192 private:
24193 Device m_device;
24194 Optional<const AllocationCallbacks> m_allocator;
24195 };
24196
24197 class SwapchainKHRDeleter
24198 {
24199 public:
24200 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24201 : m_device( device )
24202 , m_allocator( allocator )
24203 {}
24204
24205 void operator()( SwapchainKHR swapchainKHR )
24206 {
24207 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
24208 }
24209
24210 private:
24211 Device m_device;
24212 Optional<const AllocationCallbacks> m_allocator;
24213 };
24214#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24215
24216 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
24217 {
24218 return vkGetDeviceProcAddr( m_device, pName );
24219 }
24220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24221 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
24222 {
24223 return vkGetDeviceProcAddr( m_device, name.c_str() );
24224 }
24225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24226
24227 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
24228 {
24229 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24230 }
24231#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24232 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
24233 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024234 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024235 }
24236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24237
24238 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
24239 {
24240 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
24241 }
24242#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24243 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
24244 {
24245 Queue queue;
24246 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
24247 return queue;
24248 }
24249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24250
24251#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24252 VULKAN_HPP_INLINE Result Device::waitIdle() const
24253 {
24254 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24255 }
24256#else
24257 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
24258 {
24259 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24260 return createResultValue( result, "vk::Device::waitIdle" );
24261 }
24262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24263
24264 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
24265 {
24266 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
24267 }
24268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24269 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24270 {
24271 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024272 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 Lobodzinski36c33862017-02-13 10:15:53 -070024273 return createResultValue( result, memory, "vk::Device::allocateMemory" );
24274 }
24275#ifndef VULKAN_HPP_NO_SMART_HANDLE
24276 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24277 {
24278 DeviceMemoryDeleter deleter( *this, allocator );
24279 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
24280 }
24281#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24283
24284 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
24285 {
24286 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24287 }
24288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24289 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
24290 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024291 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024292 }
24293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24294
24295 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
24296 {
24297 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
24298 }
24299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24300 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
24301 {
24302 void* pData;
24303 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
24304 return createResultValue( result, pData, "vk::Device::mapMemory" );
24305 }
24306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24307
24308 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
24309 {
24310 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
24311 }
24312
24313 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24314 {
24315 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24316 }
24317#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24318 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24319 {
24320 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24321 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
24322 }
24323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24324
24325 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24326 {
24327 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24328 }
24329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24330 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24331 {
24332 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24333 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
24334 }
24335#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24336
24337 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
24338 {
24339 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
24340 }
24341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24342 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
24343 {
24344 DeviceSize committedMemoryInBytes;
24345 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24346 return committedMemoryInBytes;
24347 }
24348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24349
24350 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24351 {
24352 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24353 }
24354#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24355 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24356 {
24357 MemoryRequirements memoryRequirements;
24358 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24359 return memoryRequirements;
24360 }
24361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24362
24363#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24364 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24365 {
24366 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24367 }
24368#else
24369 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24370 {
24371 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24372 return createResultValue( result, "vk::Device::bindBufferMemory" );
24373 }
24374#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24375
24376 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24377 {
24378 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24379 }
24380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24381 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24382 {
24383 MemoryRequirements memoryRequirements;
24384 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24385 return memoryRequirements;
24386 }
24387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24388
24389#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24390 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24391 {
24392 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24393 }
24394#else
24395 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24396 {
24397 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24398 return createResultValue( result, "vk::Device::bindImageMemory" );
24399 }
24400#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24401
24402 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24403 {
24404 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24405 }
24406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24407 template <typename Allocator>
24408 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24409 {
24410 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24411 uint32_t sparseMemoryRequirementCount;
24412 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24413 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24414 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24415 return sparseMemoryRequirements;
24416 }
24417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24418
24419 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24420 {
24421 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24422 }
24423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24424 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24425 {
24426 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024427 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 Lobodzinski36c33862017-02-13 10:15:53 -070024428 return createResultValue( result, fence, "vk::Device::createFence" );
24429 }
24430#ifndef VULKAN_HPP_NO_SMART_HANDLE
24431 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24432 {
24433 FenceDeleter deleter( *this, allocator );
24434 return UniqueFence( createFence( createInfo, allocator ), deleter );
24435 }
24436#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24437#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24438
24439 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24440 {
24441 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24442 }
24443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24444 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24445 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024446 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024447 }
24448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24449
24450 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24451 {
24452 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24453 }
24454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24455 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24456 {
24457 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24458 return createResultValue( result, "vk::Device::resetFences" );
24459 }
24460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24461
24462#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24463 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24464 {
24465 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24466 }
24467#else
24468 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24469 {
24470 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24471 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24472 }
24473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24474
24475 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24476 {
24477 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24478 }
24479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24480 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24481 {
24482 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24483 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24484 }
24485#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24486
24487 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24488 {
24489 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24490 }
24491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24492 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24493 {
24494 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024495 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 Lobodzinski36c33862017-02-13 10:15:53 -070024496 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24497 }
24498#ifndef VULKAN_HPP_NO_SMART_HANDLE
24499 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24500 {
24501 SemaphoreDeleter deleter( *this, allocator );
24502 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24503 }
24504#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24505#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24506
24507 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24508 {
24509 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24510 }
24511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24512 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24513 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024514 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024515 }
24516#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24517
24518 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24519 {
24520 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24521 }
24522#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24523 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24524 {
24525 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024526 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 Lobodzinski36c33862017-02-13 10:15:53 -070024527 return createResultValue( result, event, "vk::Device::createEvent" );
24528 }
24529#ifndef VULKAN_HPP_NO_SMART_HANDLE
24530 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24531 {
24532 EventDeleter deleter( *this, allocator );
24533 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24534 }
24535#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24536#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24537
24538 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24539 {
24540 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24541 }
24542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24543 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24544 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024545 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024546 }
24547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24548
24549#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24550 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24551 {
24552 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24553 }
24554#else
24555 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24556 {
24557 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24558 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24559 }
24560#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24561
24562#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24563 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24564 {
24565 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24566 }
24567#else
24568 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24569 {
24570 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24571 return createResultValue( result, "vk::Device::setEvent" );
24572 }
24573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24574
24575#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24576 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24577 {
24578 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24579 }
24580#else
24581 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24582 {
24583 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24584 return createResultValue( result, "vk::Device::resetEvent" );
24585 }
24586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24587
24588 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24589 {
24590 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24591 }
24592#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24593 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24594 {
24595 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024596 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 Lobodzinski36c33862017-02-13 10:15:53 -070024597 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24598 }
24599#ifndef VULKAN_HPP_NO_SMART_HANDLE
24600 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24601 {
24602 QueryPoolDeleter deleter( *this, allocator );
24603 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24604 }
24605#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24606#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24607
24608 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24609 {
24610 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24611 }
24612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24613 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24614 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024615 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024616 }
24617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24618
24619 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24620 {
24621 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24622 }
24623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24624 template <typename T>
24625 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24626 {
24627 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 ) ) );
24628 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24629 }
24630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24631
24632 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24633 {
24634 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24635 }
24636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24637 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24638 {
24639 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024640 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 Lobodzinski36c33862017-02-13 10:15:53 -070024641 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24642 }
24643#ifndef VULKAN_HPP_NO_SMART_HANDLE
24644 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24645 {
24646 BufferDeleter deleter( *this, allocator );
24647 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24648 }
24649#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24650#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24651
24652 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24653 {
24654 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24655 }
24656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24657 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24658 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024659 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024660 }
24661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24662
24663 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24664 {
24665 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24666 }
24667#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24668 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24669 {
24670 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024671 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 Lobodzinski36c33862017-02-13 10:15:53 -070024672 return createResultValue( result, view, "vk::Device::createBufferView" );
24673 }
24674#ifndef VULKAN_HPP_NO_SMART_HANDLE
24675 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24676 {
24677 BufferViewDeleter deleter( *this, allocator );
24678 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24679 }
24680#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24682
24683 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24684 {
24685 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24686 }
24687#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24688 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24689 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024690 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024691 }
24692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24693
24694 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24695 {
24696 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24697 }
24698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24699 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24700 {
24701 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024702 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 Lobodzinski36c33862017-02-13 10:15:53 -070024703 return createResultValue( result, image, "vk::Device::createImage" );
24704 }
24705#ifndef VULKAN_HPP_NO_SMART_HANDLE
24706 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24707 {
24708 ImageDeleter deleter( *this, allocator );
24709 return UniqueImage( createImage( createInfo, allocator ), deleter );
24710 }
24711#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24712#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24713
24714 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24715 {
24716 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24717 }
24718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24719 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24720 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024721 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024722 }
24723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24724
24725 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24726 {
24727 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24728 }
24729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24730 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24731 {
24732 SubresourceLayout layout;
24733 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24734 return layout;
24735 }
24736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24737
24738 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24739 {
24740 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24741 }
24742#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24743 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24744 {
24745 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024746 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 Lobodzinski36c33862017-02-13 10:15:53 -070024747 return createResultValue( result, view, "vk::Device::createImageView" );
24748 }
24749#ifndef VULKAN_HPP_NO_SMART_HANDLE
24750 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24751 {
24752 ImageViewDeleter deleter( *this, allocator );
24753 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24754 }
24755#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24756#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24757
24758 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24759 {
24760 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24761 }
24762#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24763 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24764 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024765 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024766 }
24767#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24768
24769 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24770 {
24771 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24772 }
24773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24774 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24775 {
24776 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024777 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 Lobodzinski36c33862017-02-13 10:15:53 -070024778 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24779 }
24780#ifndef VULKAN_HPP_NO_SMART_HANDLE
24781 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24782 {
24783 ShaderModuleDeleter deleter( *this, allocator );
24784 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24785 }
24786#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24787#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24788
24789 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24790 {
24791 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24792 }
24793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24794 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24795 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024796 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024797 }
24798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24799
24800 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24801 {
24802 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24803 }
24804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24805 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24806 {
24807 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024808 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 Lobodzinski36c33862017-02-13 10:15:53 -070024809 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24810 }
24811#ifndef VULKAN_HPP_NO_SMART_HANDLE
24812 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24813 {
24814 PipelineCacheDeleter deleter( *this, allocator );
24815 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24816 }
24817#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24818#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24819
24820 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24821 {
24822 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24823 }
24824#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24825 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24826 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024827 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024828 }
24829#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24830
24831 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24832 {
24833 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24834 }
24835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24836 template <typename Allocator>
24837 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24838 {
24839 std::vector<uint8_t,Allocator> data;
24840 size_t dataSize;
24841 Result result;
24842 do
24843 {
24844 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24845 if ( ( result == Result::eSuccess ) && dataSize )
24846 {
24847 data.resize( dataSize );
24848 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24849 }
24850 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024851 assert( dataSize <= data.size() );
24852 data.resize( dataSize );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024853 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24854 }
24855#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24856
24857 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24858 {
24859 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24860 }
24861#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24862 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24863 {
24864 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24865 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24866 }
24867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24868
24869 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24870 {
24871 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 ) ) );
24872 }
24873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24874 template <typename Allocator>
24875 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24876 {
24877 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024878 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 Lobodzinski36c33862017-02-13 10:15:53 -070024879 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24880 }
24881 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24882 {
24883 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024884 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 Lobodzinski36c33862017-02-13 10:15:53 -070024885 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24886 }
24887#ifndef VULKAN_HPP_NO_SMART_HANDLE
24888 template <typename Allocator>
24889 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24890 {
24891 PipelineDeleter deleter( *this, allocator );
24892 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24893 std::vector<UniquePipeline> uniquePipelines;
24894 uniquePipelines.reserve( pipelines.size() );
24895 for ( auto pipeline : pipelines )
24896 {
24897 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24898 }
24899 return uniquePipelines;
24900 }
24901 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24902 {
24903 PipelineDeleter deleter( *this, allocator );
24904 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24905 }
24906#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24908
24909 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24910 {
24911 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 ) ) );
24912 }
24913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24914 template <typename Allocator>
24915 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24916 {
24917 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024918 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 Lobodzinski36c33862017-02-13 10:15:53 -070024919 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24920 }
24921 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24922 {
24923 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024924 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 Lobodzinski36c33862017-02-13 10:15:53 -070024925 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24926 }
24927#ifndef VULKAN_HPP_NO_SMART_HANDLE
24928 template <typename Allocator>
24929 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24930 {
24931 PipelineDeleter deleter( *this, allocator );
24932 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24933 std::vector<UniquePipeline> uniquePipelines;
24934 uniquePipelines.reserve( pipelines.size() );
24935 for ( auto pipeline : pipelines )
24936 {
24937 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24938 }
24939 return uniquePipelines;
24940 }
24941 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24942 {
24943 PipelineDeleter deleter( *this, allocator );
24944 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24945 }
24946#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24948
24949 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24950 {
24951 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24952 }
24953#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24954 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24955 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024956 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024957 }
24958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24959
24960 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24961 {
24962 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24963 }
24964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24965 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24966 {
24967 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024968 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 Lobodzinski36c33862017-02-13 10:15:53 -070024969 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
24970 }
24971#ifndef VULKAN_HPP_NO_SMART_HANDLE
24972 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24973 {
24974 PipelineLayoutDeleter deleter( *this, allocator );
24975 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
24976 }
24977#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24978#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24979
24980 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
24981 {
24982 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24983 }
24984#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24985 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
24986 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024987 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024988 }
24989#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24990
24991 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
24992 {
24993 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
24994 }
24995#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24996 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24997 {
24998 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024999 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 Lobodzinski36c33862017-02-13 10:15:53 -070025000 return createResultValue( result, sampler, "vk::Device::createSampler" );
25001 }
25002#ifndef VULKAN_HPP_NO_SMART_HANDLE
25003 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25004 {
25005 SamplerDeleter deleter( *this, allocator );
25006 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
25007 }
25008#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25010
25011 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
25012 {
25013 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25014 }
25015#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25016 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
25017 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025018 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025019 }
25020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25021
25022 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
25023 {
25024 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
25025 }
25026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25027 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25028 {
25029 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025030 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 Lobodzinski36c33862017-02-13 10:15:53 -070025031 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
25032 }
25033#ifndef VULKAN_HPP_NO_SMART_HANDLE
25034 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25035 {
25036 DescriptorSetLayoutDeleter deleter( *this, allocator );
25037 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
25038 }
25039#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25041
25042 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
25043 {
25044 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25045 }
25046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25047 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
25048 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025049 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025050 }
25051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25052
25053 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
25054 {
25055 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
25056 }
25057#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25058 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25059 {
25060 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025061 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 Lobodzinski36c33862017-02-13 10:15:53 -070025062 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
25063 }
25064#ifndef VULKAN_HPP_NO_SMART_HANDLE
25065 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25066 {
25067 DescriptorPoolDeleter deleter( *this, allocator );
25068 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
25069 }
25070#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25072
25073 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
25074 {
25075 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25076 }
25077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25078 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
25079 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025080 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025081 }
25082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25083
25084#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25085 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
25086 {
25087 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
25088 }
25089#else
25090 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
25091 {
25092 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
25093 return createResultValue( result, "vk::Device::resetDescriptorPool" );
25094 }
25095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25096
25097 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
25098 {
25099 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
25100 }
25101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25102 template <typename Allocator>
25103 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
25104 {
25105 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
25106 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
25107 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
25108 }
25109#ifndef VULKAN_HPP_NO_SMART_HANDLE
25110 template <typename Allocator>
25111 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
25112 {
25113 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
25114 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
25115 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
25116 uniqueDescriptorSets.reserve( descriptorSets.size() );
25117 for ( auto descriptorSet : descriptorSets )
25118 {
25119 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
25120 }
25121 return uniqueDescriptorSets;
25122 }
25123#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25125
25126 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
25127 {
25128 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
25129 }
25130#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25131 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
25132 {
25133 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
25134 return createResultValue( result, "vk::Device::freeDescriptorSets" );
25135 }
25136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25137
25138 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
25139 {
25140 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
25141 }
25142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25143 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
25144 {
25145 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
25146 }
25147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25148
25149 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
25150 {
25151 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
25152 }
25153#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25154 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25155 {
25156 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025157 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 Lobodzinski36c33862017-02-13 10:15:53 -070025158 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
25159 }
25160#ifndef VULKAN_HPP_NO_SMART_HANDLE
25161 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25162 {
25163 FramebufferDeleter deleter( *this, allocator );
25164 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
25165 }
25166#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25167#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25168
25169 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
25170 {
25171 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25172 }
25173#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25174 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
25175 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025176 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025177 }
25178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25179
25180 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
25181 {
25182 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
25183 }
25184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25185 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25186 {
25187 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025188 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 Lobodzinski36c33862017-02-13 10:15:53 -070025189 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
25190 }
25191#ifndef VULKAN_HPP_NO_SMART_HANDLE
25192 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25193 {
25194 RenderPassDeleter deleter( *this, allocator );
25195 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
25196 }
25197#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25199
25200 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
25201 {
25202 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25203 }
25204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25205 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
25206 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025207 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025208 }
25209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25210
25211 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
25212 {
25213 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
25214 }
25215#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25216 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
25217 {
25218 Extent2D granularity;
25219 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
25220 return granularity;
25221 }
25222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25223
25224 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
25225 {
25226 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
25227 }
25228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25229 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25230 {
25231 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025232 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 Lobodzinski36c33862017-02-13 10:15:53 -070025233 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
25234 }
25235#ifndef VULKAN_HPP_NO_SMART_HANDLE
25236 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25237 {
25238 CommandPoolDeleter deleter( *this, allocator );
25239 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
25240 }
25241#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25243
25244 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
25245 {
25246 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25247 }
25248#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25249 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
25250 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025251 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025252 }
25253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25254
25255#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25256 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25257 {
25258 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25259 }
25260#else
25261 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25262 {
25263 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25264 return createResultValue( result, "vk::Device::resetCommandPool" );
25265 }
25266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25267
25268 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
25269 {
25270 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
25271 }
25272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25273 template <typename Allocator>
25274 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
25275 {
25276 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
25277 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
25278 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
25279 }
25280#ifndef VULKAN_HPP_NO_SMART_HANDLE
25281 template <typename Allocator>
25282 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
25283 {
25284 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
25285 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
25286 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
25287 uniqueCommandBuffers.reserve( commandBuffers.size() );
25288 for ( auto commandBuffer : commandBuffers )
25289 {
25290 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
25291 }
25292 return uniqueCommandBuffers;
25293 }
25294#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25296
25297 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
25298 {
25299 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
25300 }
25301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25302 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
25303 {
25304 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
25305 }
25306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25307
25308 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
25309 {
25310 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
25311 }
25312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25313 template <typename Allocator>
25314 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25315 {
25316 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025317 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 Lobodzinski36c33862017-02-13 10:15:53 -070025318 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
25319 }
25320 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25321 {
25322 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025323 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 Lobodzinski36c33862017-02-13 10:15:53 -070025324 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
25325 }
25326#ifndef VULKAN_HPP_NO_SMART_HANDLE
25327 template <typename Allocator>
25328 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25329 {
25330 SwapchainKHRDeleter deleter( *this, allocator );
25331 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
25332 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
25333 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
25334 for ( auto swapchainKHR : swapchainKHRs )
25335 {
25336 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
25337 }
25338 return uniqueSwapchainKHRs;
25339 }
25340 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25341 {
25342 SwapchainKHRDeleter deleter( *this, allocator );
25343 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
25344 }
25345#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25347
25348 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25349 {
25350 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25351 }
25352#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25353 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25354 {
25355 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025356 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 Lobodzinski36c33862017-02-13 10:15:53 -070025357 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25358 }
25359#ifndef VULKAN_HPP_NO_SMART_HANDLE
25360 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25361 {
25362 SwapchainKHRDeleter deleter( *this, allocator );
25363 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25364 }
25365#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25367
25368 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25369 {
25370 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25371 }
25372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25373 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25374 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025375 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025376 }
25377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25378
25379 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25380 {
25381 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25382 }
25383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25384 template <typename Allocator>
25385 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25386 {
25387 std::vector<Image,Allocator> swapchainImages;
25388 uint32_t swapchainImageCount;
25389 Result result;
25390 do
25391 {
25392 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25393 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25394 {
25395 swapchainImages.resize( swapchainImageCount );
25396 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25397 }
25398 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025399 assert( swapchainImageCount <= swapchainImages.size() );
25400 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025401 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25402 }
25403#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25404
25405 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25406 {
25407 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25408 }
25409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25410 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25411 {
25412 uint32_t imageIndex;
25413 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25414 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25415 }
25416#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25417
25418 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25419 {
25420 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25421 }
25422#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25423 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25424 {
25425 DebugMarkerObjectNameInfoEXT nameInfo;
25426 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25427 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25428 }
25429#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25430
25431 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25432 {
25433 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25434 }
25435#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25436 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25437 {
25438 DebugMarkerObjectTagInfoEXT tagInfo;
25439 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25440 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25441 }
25442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25443
25444#ifdef VK_USE_PLATFORM_WIN32_KHR
25445 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25446 {
25447 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25448 }
25449#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25450 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25451 {
25452 HANDLE handle;
25453 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25454 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25455 }
25456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25457#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25458
25459 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25460 {
25461 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25462 }
25463#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25464 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25465 {
25466 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025467 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 Lobodzinski36c33862017-02-13 10:15:53 -070025468 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25469 }
25470#ifndef VULKAN_HPP_NO_SMART_HANDLE
25471 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25472 {
25473 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25474 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25475 }
25476#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25478
25479 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25480 {
25481 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25482 }
25483#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25484 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25485 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025486 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025487 }
25488#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25489
25490 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25491 {
25492 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25493 }
25494#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25495 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25496 {
25497 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025498 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 Lobodzinski36c33862017-02-13 10:15:53 -070025499 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25500 }
25501#ifndef VULKAN_HPP_NO_SMART_HANDLE
25502 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25503 {
25504 ObjectTableNVXDeleter deleter( *this, allocator );
25505 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25506 }
25507#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25509
25510 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25511 {
25512 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25513 }
25514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25515 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25516 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025517 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025518 }
25519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25520
25521 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25522 {
25523 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25524 }
25525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25526 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25527 {
25528#ifdef VULKAN_HPP_NO_EXCEPTIONS
25529 assert( pObjectTableEntries.size() == objectIndices.size() );
25530#else
25531 if ( pObjectTableEntries.size() != objectIndices.size() )
25532 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025533 throw LogicError( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025534 }
25535#endif // VULKAN_HPP_NO_EXCEPTIONS
25536 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25537 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25538 }
25539#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25540
25541 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25542 {
25543 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25544 }
25545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25546 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25547 {
25548#ifdef VULKAN_HPP_NO_EXCEPTIONS
25549 assert( objectEntryTypes.size() == objectIndices.size() );
25550#else
25551 if ( objectEntryTypes.size() != objectIndices.size() )
25552 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025553 throw LogicError( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025554 }
25555#endif // VULKAN_HPP_NO_EXCEPTIONS
25556 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25557 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25558 }
25559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25560
25561 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25562 {
25563 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25564 }
25565
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025566#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025567 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25568 {
25569 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25570 }
25571#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25572 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25573 {
25574 HANDLE handle;
25575 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25576 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25577 }
25578#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025579#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025580
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025581#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025582 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25583 {
25584 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25585 }
25586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25587 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25588 {
25589 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25590 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25591 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25592 }
25593#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025594#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025595
25596 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25597 {
25598 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25599 }
25600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25601 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25602 {
25603 int fd;
25604 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25605 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25606 }
25607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25608
25609 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25610 {
25611 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25612 }
25613#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25614 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25615 {
25616 MemoryFdPropertiesKHX memoryFdProperties;
25617 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25618 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25619 }
25620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25621
25622#ifdef VK_USE_PLATFORM_WIN32_KHX
25623 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25624 {
25625 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25626 }
25627#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25628 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25629 {
25630 HANDLE handle;
25631 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25632 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25633 }
25634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25635#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25636
25637#ifdef VK_USE_PLATFORM_WIN32_KHX
25638 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25639 {
25640 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25641 }
25642#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25643 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25644 {
25645 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25646 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25647 }
25648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25649#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25650
25651 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25652 {
25653 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25654 }
25655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25656 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25657 {
25658 int fd;
25659 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25660 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25661 }
25662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25663
25664 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25665 {
25666 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25667 }
25668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25669 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25670 {
25671 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25672 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25673 }
25674#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25675
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025676 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25677 {
25678 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25679 }
25680#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25681 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25682 {
25683 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25684 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25685 }
25686#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25687
25688 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25689 {
25690 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25691 }
25692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25693 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25694 {
25695 Fence fence;
25696 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25697 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25698 }
25699#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25700
25701 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25702 {
25703 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 ) ) );
25704 }
25705#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25706 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25707 {
25708 Fence fence;
25709 Result result = static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( &displayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25710 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25711 }
25712#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25713
25714 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25715 {
25716 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25717 }
25718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25719 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25720 {
25721 uint64_t counterValue;
25722 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25723 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25724 }
25725#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025726
25727 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25728 {
25729 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25730 }
25731#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25732 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25733 {
25734 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25735 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25736 return peerMemoryFeatures;
25737 }
25738#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25739
25740 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25741 {
25742 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25743 }
25744#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25745 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25746 {
25747 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25748 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25749 }
25750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25751
25752 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25753 {
25754 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25755 }
25756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25757 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25758 {
25759 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25760 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25761 }
25762#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25763
25764 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25765 {
25766 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25767 }
25768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25769 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25770 {
25771 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25772 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25773 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25774 }
25775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25776
25777 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25778 {
25779 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25780 }
25781#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25782 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25783 {
25784 DeviceGroupPresentModeFlagsKHX modes;
25785 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25786 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25787 }
25788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25789
25790 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25791 {
25792 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25793 }
25794#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25795 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25796 {
25797 uint32_t imageIndex;
25798 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25799 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25800 }
25801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25802
25803 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25804 {
25805 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25806 }
25807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25808 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25809 {
25810 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025811 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 Young0f183a82017-02-28 09:58:04 -070025812 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25813 }
25814#ifndef VULKAN_HPP_NO_SMART_HANDLE
25815 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25816 {
25817 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25818 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25819 }
25820#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25821#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25822
25823 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25824 {
25825 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25826 }
25827#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25828 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25829 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025830 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025831 }
25832#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25833
25834 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25835 {
25836 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25837 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025838
25839 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25840 {
25841 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25842 }
25843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25844 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25845 {
25846#ifdef VULKAN_HPP_NO_EXCEPTIONS
25847 assert( swapchains.size() == metadata.size() );
25848#else
25849 if ( swapchains.size() != metadata.size() )
25850 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025851 throw LogicError( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025852 }
25853#endif // VULKAN_HPP_NO_EXCEPTIONS
25854 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25855 }
25856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25857
Mark Lobodzinski54385432017-05-15 10:27:52 -060025858#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25859 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
25860 {
25861 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
25862 }
25863#else
25864 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
25865 {
25866 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
25867 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
25868 }
25869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25870
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025871 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25872 {
25873 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25874 }
25875#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25876 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25877 {
25878 RefreshCycleDurationGOOGLE displayTimingProperties;
25879 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25880 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25881 }
25882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25883
25884 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25885 {
25886 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25887 }
25888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25889 template <typename Allocator>
25890 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25891 {
25892 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25893 uint32_t presentationTimingCount;
25894 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25895 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25896 {
25897 presentationTimings.resize( presentationTimingCount );
25898 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25899 }
25900 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25901 }
25902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25903
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025904#ifndef VULKAN_HPP_NO_SMART_HANDLE
25905 class DeviceDeleter;
25906 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25907#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25908
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025909 class PhysicalDevice
25910 {
25911 public:
25912 PhysicalDevice()
25913 : m_physicalDevice(VK_NULL_HANDLE)
25914 {}
25915
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025916 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025917 : m_physicalDevice(VK_NULL_HANDLE)
25918 {}
25919
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025920 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
25921 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025922 {}
25923
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025924#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025925 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025926 {
25927 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025928 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025929 }
25930#endif
25931
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025932 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025933 {
25934 m_physicalDevice = VK_NULL_HANDLE;
25935 return *this;
25936 }
25937
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025938 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025939 {
25940 return m_physicalDevice == rhs.m_physicalDevice;
25941 }
25942
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025943 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025944 {
25945 return m_physicalDevice != rhs.m_physicalDevice;
25946 }
25947
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025948 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025949 {
25950 return m_physicalDevice < rhs.m_physicalDevice;
25951 }
25952
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025953 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025955 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025956#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25957
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025958 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025960 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25961 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025962#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25963
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025964 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025965#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025966 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25968
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025969 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025970#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025971 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025974 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025976 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025979 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025981 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025984 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025986 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25987#ifndef VULKAN_HPP_NO_SMART_HANDLE
25988 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25989#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25991
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025992 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025994 template <typename Allocator = std::allocator<LayerProperties>>
25995 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025998 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026000 template <typename Allocator = std::allocator<ExtensionProperties>>
26001 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26003
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026004 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 -060026005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026006 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
26007 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26009
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026010 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026012 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
26013 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26015
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026016 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026017#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026018 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
26019 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26021
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026022 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026023#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026024 template <typename Allocator = std::allocator<DisplayKHR>>
26025 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26027
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026028 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026030 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
26031 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26033
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026034 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026036 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26038
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026039 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026040#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026041 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26043
26044#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026045 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
26046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26047 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
26048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026049#endif /*VK_USE_PLATFORM_MIR_KHR*/
26050
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026051 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026052#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026053 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026054#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26055
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026056 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026057#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026058 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26060
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026061 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026063 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
26064 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026065#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26066
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026067 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026068#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026069 template <typename Allocator = std::allocator<PresentModeKHR>>
26070 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26072
26073#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026074 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
26075#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26076 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
26077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026078#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26079
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026080#ifdef VK_USE_PLATFORM_WIN32_KHR
26081 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
26082#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26083
26084#ifdef VK_USE_PLATFORM_XLIB_KHR
26085 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026087 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
26088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26089#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26090
26091#ifdef VK_USE_PLATFORM_XCB_KHR
26092 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
26093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26094 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
26095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26096#endif /*VK_USE_PLATFORM_XCB_KHR*/
26097
26098 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
26099#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26100 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
26101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26102
26103 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
26104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26105 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
26106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26107
26108 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
26109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26110 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
26111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26112
26113 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
26114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26115 PhysicalDeviceProperties2KHR getProperties2KHR() const;
26116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26117
26118 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
26119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26120 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
26121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26122
26123 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
26124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26125 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
26126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26127
26128 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
26129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26130 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
26131 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
26132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26133
26134 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
26135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26136 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
26137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26138
26139 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
26140#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26141 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
26142 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26144
Mark Young0f183a82017-02-28 09:58:04 -070026145 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
26146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26147 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
26148#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26149
26150 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
26151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26152 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
26153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26154
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026155#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026156 Result releaseDisplayEXT( DisplayKHR display ) const;
26157#else
26158 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26160
26161#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026162 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026164 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026166#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26167
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026168#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26169 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070026170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026171 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070026172#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026173#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070026174
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026175 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070026176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026177 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070026178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26179
Mark Young0f183a82017-02-28 09:58:04 -070026180 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
26181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26182 template <typename Allocator = std::allocator<Rect2D>>
26183 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
26184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26185
Mark Lobodzinski54385432017-05-15 10:27:52 -060026186 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
26187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026188 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060026189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26190
26191 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
26192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26193 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
26194 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
26195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26196
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026197
26198
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026199 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026200 {
26201 return m_physicalDevice;
26202 }
26203
26204 explicit operator bool() const
26205 {
26206 return m_physicalDevice != VK_NULL_HANDLE;
26207 }
26208
26209 bool operator!() const
26210 {
26211 return m_physicalDevice == VK_NULL_HANDLE;
26212 }
26213
26214 private:
26215 VkPhysicalDevice m_physicalDevice;
26216 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026217
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026218 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
26219
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026220#ifndef VULKAN_HPP_NO_SMART_HANDLE
26221 class DeviceDeleter
26222 {
26223 public:
26224 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
26225 : m_allocator( allocator )
26226 {}
26227
26228 void operator()( Device device )
26229 {
26230 device.destroy( m_allocator );
26231 }
26232
26233 private:
26234 Optional<const AllocationCallbacks> m_allocator;
26235 };
26236#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26237
26238 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
26239 {
26240 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
26241 }
26242#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26243 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
26244 {
26245 PhysicalDeviceProperties properties;
26246 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
26247 return properties;
26248 }
26249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26250
26251 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
26252 {
26253 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
26254 }
26255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26256 template <typename Allocator>
26257 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
26258 {
26259 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
26260 uint32_t queueFamilyPropertyCount;
26261 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26262 queueFamilyProperties.resize( queueFamilyPropertyCount );
26263 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
26264 return queueFamilyProperties;
26265 }
26266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26267
26268 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
26269 {
26270 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
26271 }
26272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26273 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
26274 {
26275 PhysicalDeviceMemoryProperties memoryProperties;
26276 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
26277 return memoryProperties;
26278 }
26279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26280
26281 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
26282 {
26283 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
26284 }
26285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26286 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
26287 {
26288 PhysicalDeviceFeatures features;
26289 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
26290 return features;
26291 }
26292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26293
26294 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
26295 {
26296 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
26297 }
26298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26299 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
26300 {
26301 FormatProperties formatProperties;
26302 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
26303 return formatProperties;
26304 }
26305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26306
26307 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
26308 {
26309 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 ) ) );
26310 }
26311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26312 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
26313 {
26314 ImageFormatProperties imageFormatProperties;
26315 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 ) ) );
26316 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
26317 }
26318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26319
26320 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
26321 {
26322 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
26323 }
26324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26325 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26326 {
26327 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026328 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 Lobodzinski36c33862017-02-13 10:15:53 -070026329 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
26330 }
26331#ifndef VULKAN_HPP_NO_SMART_HANDLE
26332 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26333 {
26334 DeviceDeleter deleter( allocator );
26335 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
26336 }
26337#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26339
26340 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
26341 {
26342 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
26343 }
26344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26345 template <typename Allocator>
26346 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
26347 {
26348 std::vector<LayerProperties,Allocator> properties;
26349 uint32_t propertyCount;
26350 Result result;
26351 do
26352 {
26353 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
26354 if ( ( result == Result::eSuccess ) && propertyCount )
26355 {
26356 properties.resize( propertyCount );
26357 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
26358 }
26359 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026360 assert( propertyCount <= properties.size() );
26361 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026362 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
26363 }
26364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26365
26366 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
26367 {
26368 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
26369 }
26370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26371 template <typename Allocator>
26372 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26373 {
26374 std::vector<ExtensionProperties,Allocator> properties;
26375 uint32_t propertyCount;
26376 Result result;
26377 do
26378 {
26379 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26380 if ( ( result == Result::eSuccess ) && propertyCount )
26381 {
26382 properties.resize( propertyCount );
26383 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26384 }
26385 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026386 assert( propertyCount <= properties.size() );
26387 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026388 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26389 }
26390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26391
26392 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26393 {
26394 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 ) );
26395 }
26396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26397 template <typename Allocator>
26398 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26399 {
26400 std::vector<SparseImageFormatProperties,Allocator> properties;
26401 uint32_t propertyCount;
26402 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 );
26403 properties.resize( propertyCount );
26404 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() ) );
26405 return properties;
26406 }
26407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26408
26409 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26410 {
26411 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26412 }
26413#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26414 template <typename Allocator>
26415 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26416 {
26417 std::vector<DisplayPropertiesKHR,Allocator> properties;
26418 uint32_t propertyCount;
26419 Result result;
26420 do
26421 {
26422 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26423 if ( ( result == Result::eSuccess ) && propertyCount )
26424 {
26425 properties.resize( propertyCount );
26426 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26427 }
26428 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026429 assert( propertyCount <= properties.size() );
26430 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026431 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26432 }
26433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26434
26435 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26436 {
26437 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26438 }
26439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26440 template <typename Allocator>
26441 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26442 {
26443 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26444 uint32_t propertyCount;
26445 Result result;
26446 do
26447 {
26448 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26449 if ( ( result == Result::eSuccess ) && propertyCount )
26450 {
26451 properties.resize( propertyCount );
26452 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26453 }
26454 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026455 assert( propertyCount <= properties.size() );
26456 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026457 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26458 }
26459#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26460
26461 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26462 {
26463 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26464 }
26465#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26466 template <typename Allocator>
26467 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26468 {
26469 std::vector<DisplayKHR,Allocator> displays;
26470 uint32_t displayCount;
26471 Result result;
26472 do
26473 {
26474 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26475 if ( ( result == Result::eSuccess ) && displayCount )
26476 {
26477 displays.resize( displayCount );
26478 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26479 }
26480 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026481 assert( displayCount <= displays.size() );
26482 displays.resize( displayCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026483 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26484 }
26485#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26486
26487 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26488 {
26489 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26490 }
26491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26492 template <typename Allocator>
26493 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26494 {
26495 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26496 uint32_t propertyCount;
26497 Result result;
26498 do
26499 {
26500 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26501 if ( ( result == Result::eSuccess ) && propertyCount )
26502 {
26503 properties.resize( propertyCount );
26504 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26505 }
26506 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026507 assert( propertyCount <= properties.size() );
26508 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026509 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26510 }
26511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26512
26513 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26514 {
26515 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 ) ) );
26516 }
26517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26518 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26519 {
26520 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026521 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 Lobodzinski36c33862017-02-13 10:15:53 -070026522 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26523 }
26524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26525
26526 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26527 {
26528 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26529 }
26530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26531 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26532 {
26533 DisplayPlaneCapabilitiesKHR capabilities;
26534 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26535 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26536 }
26537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26538
26539#ifdef VK_USE_PLATFORM_MIR_KHR
26540 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26541 {
26542 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26543 }
26544#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26545 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26546 {
26547 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26548 }
26549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26550#endif /*VK_USE_PLATFORM_MIR_KHR*/
26551
26552 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26553 {
26554 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26555 }
26556#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26557 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26558 {
26559 Bool32 supported;
26560 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26561 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26562 }
26563#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26564
26565 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26566 {
26567 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26568 }
26569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26570 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26571 {
26572 SurfaceCapabilitiesKHR surfaceCapabilities;
26573 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26574 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26575 }
26576#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26577
26578 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26579 {
26580 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26581 }
26582#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26583 template <typename Allocator>
26584 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26585 {
26586 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26587 uint32_t surfaceFormatCount;
26588 Result result;
26589 do
26590 {
26591 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26592 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26593 {
26594 surfaceFormats.resize( surfaceFormatCount );
26595 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26596 }
26597 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026598 assert( surfaceFormatCount <= surfaceFormats.size() );
26599 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026600 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26601 }
26602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26603
26604 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26605 {
26606 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26607 }
26608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26609 template <typename Allocator>
26610 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26611 {
26612 std::vector<PresentModeKHR,Allocator> presentModes;
26613 uint32_t presentModeCount;
26614 Result result;
26615 do
26616 {
26617 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26618 if ( ( result == Result::eSuccess ) && presentModeCount )
26619 {
26620 presentModes.resize( presentModeCount );
26621 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26622 }
26623 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026624 assert( presentModeCount <= presentModes.size() );
26625 presentModes.resize( presentModeCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026626 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26627 }
26628#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26629
26630#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26631 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26632 {
26633 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26634 }
26635#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26636 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26637 {
26638 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26639 }
26640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26641#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26642
26643#ifdef VK_USE_PLATFORM_WIN32_KHR
26644 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26645 {
26646 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26647 }
26648#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26649
26650#ifdef VK_USE_PLATFORM_XLIB_KHR
26651 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26652 {
26653 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26654 }
26655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26656 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26657 {
26658 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26659 }
26660#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26661#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26662
26663#ifdef VK_USE_PLATFORM_XCB_KHR
26664 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26665 {
26666 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26667 }
26668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26669 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26670 {
26671 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26672 }
26673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26674#endif /*VK_USE_PLATFORM_XCB_KHR*/
26675
26676 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26677 {
26678 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 ) ) );
26679 }
26680#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26681 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26682 {
26683 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26684 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 ) ) );
26685 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26686 }
26687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26688
26689 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26690 {
26691 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26692 }
26693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26694 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26695 {
26696 DeviceGeneratedCommandsLimitsNVX limits;
26697 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26698 return limits;
26699 }
26700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26701
26702 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26703 {
26704 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26705 }
26706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26707 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26708 {
26709 PhysicalDeviceFeatures2KHR features;
26710 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26711 return features;
26712 }
26713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26714
26715 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26716 {
26717 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26718 }
26719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26720 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26721 {
26722 PhysicalDeviceProperties2KHR properties;
26723 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26724 return properties;
26725 }
26726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26727
26728 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26729 {
26730 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26731 }
26732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26733 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26734 {
26735 FormatProperties2KHR formatProperties;
26736 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26737 return formatProperties;
26738 }
26739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26740
26741 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26742 {
26743 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26744 }
26745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26746 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26747 {
26748 ImageFormatProperties2KHR imageFormatProperties;
26749 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26750 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26751 }
26752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26753
26754 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26755 {
26756 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26757 }
26758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26759 template <typename Allocator>
26760 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26761 {
26762 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26763 uint32_t queueFamilyPropertyCount;
26764 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26765 queueFamilyProperties.resize( queueFamilyPropertyCount );
26766 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26767 return queueFamilyProperties;
26768 }
26769#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26770
26771 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26772 {
26773 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26774 }
26775#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26776 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26777 {
26778 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26779 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26780 return memoryProperties;
26781 }
26782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26783
26784 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26785 {
26786 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26787 }
26788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26789 template <typename Allocator>
26790 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26791 {
26792 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26793 uint32_t propertyCount;
26794 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26795 properties.resize( propertyCount );
26796 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26797 return properties;
26798 }
26799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26800
Mark Young0f183a82017-02-28 09:58:04 -070026801 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26802 {
26803 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26804 }
26805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26806 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26807 {
26808 ExternalBufferPropertiesKHX externalBufferProperties;
26809 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26810 return externalBufferProperties;
26811 }
26812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26813
26814 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26815 {
26816 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26817 }
26818#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26819 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26820 {
26821 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26822 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26823 return externalSemaphoreProperties;
26824 }
26825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26826
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026827#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26828 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26829 {
26830 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26831 }
26832#else
26833 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26834 {
26835 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26836 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26837 }
26838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26839
26840#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26841 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26842 {
26843 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26844 }
26845#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26846 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26847 {
26848 Display dpy;
26849 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26850 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26851 }
26852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26853#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26854
26855#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26856 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26857 {
26858 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26859 }
26860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26861 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26862 {
26863 DisplayKHR display;
26864 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26865 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26866 }
26867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26868#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26869
26870 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26871 {
26872 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26873 }
26874#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26875 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26876 {
26877 SurfaceCapabilities2EXT surfaceCapabilities;
26878 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26879 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26880 }
26881#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026882
26883 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26884 {
26885 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26886 }
26887#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26888 template <typename Allocator>
26889 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26890 {
26891 std::vector<Rect2D,Allocator> rects;
26892 uint32_t rectCount;
26893 Result result;
26894 do
26895 {
26896 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26897 if ( ( result == Result::eSuccess ) && rectCount )
26898 {
26899 rects.resize( rectCount );
26900 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26901 }
26902 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026903 assert( rectCount <= rects.size() );
26904 rects.resize( rectCount );
Mark Young0f183a82017-02-28 09:58:04 -070026905 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26906 }
26907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026908
Mark Lobodzinski54385432017-05-15 10:27:52 -060026909 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
26910 {
26911 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
26912 }
26913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026914 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060026915 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026916 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060026917 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
26918 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
26919 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060026920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26921
26922 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
26923 {
26924 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
26925 }
26926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26927 template <typename Allocator>
26928 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
26929 {
26930 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
26931 uint32_t surfaceFormatCount;
26932 Result result;
26933 do
26934 {
26935 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
26936 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26937 {
26938 surfaceFormats.resize( surfaceFormatCount );
26939 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
26940 }
26941 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026942 assert( surfaceFormatCount <= surfaceFormats.size() );
26943 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski54385432017-05-15 10:27:52 -060026944 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
26945 }
26946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26947
Mark Young0f183a82017-02-28 09:58:04 -070026948 struct CmdProcessCommandsInfoNVX
26949 {
26950 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 )
26951 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26952 , pNext( nullptr )
26953 , objectTable( objectTable_ )
26954 , indirectCommandsLayout( indirectCommandsLayout_ )
26955 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26956 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26957 , maxSequencesCount( maxSequencesCount_ )
26958 , targetCommandBuffer( targetCommandBuffer_ )
26959 , sequencesCountBuffer( sequencesCountBuffer_ )
26960 , sequencesCountOffset( sequencesCountOffset_ )
26961 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26962 , sequencesIndexOffset( sequencesIndexOffset_ )
26963 {
26964 }
26965
26966 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
26967 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026968 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070026969 }
26970
26971 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
26972 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026973 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070026974 return *this;
26975 }
Mark Young0f183a82017-02-28 09:58:04 -070026976 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
26977 {
26978 pNext = pNext_;
26979 return *this;
26980 }
26981
26982 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
26983 {
26984 objectTable = objectTable_;
26985 return *this;
26986 }
26987
26988 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
26989 {
26990 indirectCommandsLayout = indirectCommandsLayout_;
26991 return *this;
26992 }
26993
26994 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
26995 {
26996 indirectCommandsTokenCount = indirectCommandsTokenCount_;
26997 return *this;
26998 }
26999
27000 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
27001 {
27002 pIndirectCommandsTokens = pIndirectCommandsTokens_;
27003 return *this;
27004 }
27005
27006 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
27007 {
27008 maxSequencesCount = maxSequencesCount_;
27009 return *this;
27010 }
27011
27012 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
27013 {
27014 targetCommandBuffer = targetCommandBuffer_;
27015 return *this;
27016 }
27017
27018 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
27019 {
27020 sequencesCountBuffer = sequencesCountBuffer_;
27021 return *this;
27022 }
27023
27024 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
27025 {
27026 sequencesCountOffset = sequencesCountOffset_;
27027 return *this;
27028 }
27029
27030 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
27031 {
27032 sequencesIndexBuffer = sequencesIndexBuffer_;
27033 return *this;
27034 }
27035
27036 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
27037 {
27038 sequencesIndexOffset = sequencesIndexOffset_;
27039 return *this;
27040 }
27041
27042 operator const VkCmdProcessCommandsInfoNVX&() const
27043 {
27044 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
27045 }
27046
27047 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
27048 {
27049 return ( sType == rhs.sType )
27050 && ( pNext == rhs.pNext )
27051 && ( objectTable == rhs.objectTable )
27052 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
27053 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
27054 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
27055 && ( maxSequencesCount == rhs.maxSequencesCount )
27056 && ( targetCommandBuffer == rhs.targetCommandBuffer )
27057 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
27058 && ( sequencesCountOffset == rhs.sequencesCountOffset )
27059 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
27060 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
27061 }
27062
27063 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
27064 {
27065 return !operator==( rhs );
27066 }
27067
27068 private:
27069 StructureType sType;
27070
27071 public:
27072 const void* pNext;
27073 ObjectTableNVX objectTable;
27074 IndirectCommandsLayoutNVX indirectCommandsLayout;
27075 uint32_t indirectCommandsTokenCount;
27076 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
27077 uint32_t maxSequencesCount;
27078 CommandBuffer targetCommandBuffer;
27079 Buffer sequencesCountBuffer;
27080 DeviceSize sequencesCountOffset;
27081 Buffer sequencesIndexBuffer;
27082 DeviceSize sequencesIndexOffset;
27083 };
27084 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
27085
27086 struct PhysicalDeviceGroupPropertiesKHX
27087 {
27088 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
27089 {
27090 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
27091 }
27092
27093 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
27094 {
27095 return ( sType == rhs.sType )
27096 && ( pNext == rhs.pNext )
27097 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27098 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
27099 && ( subsetAllocation == rhs.subsetAllocation );
27100 }
27101
27102 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
27103 {
27104 return !operator==( rhs );
27105 }
27106
27107 private:
27108 StructureType sType;
27109
27110 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060027111 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027112 uint32_t physicalDeviceCount;
27113 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
27114 Bool32 subsetAllocation;
27115 };
27116 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
27117
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027118#ifndef VULKAN_HPP_NO_SMART_HANDLE
27119 class DebugReportCallbackEXTDeleter;
27120 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
27121 class SurfaceKHRDeleter;
27122 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
27123#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27124
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027125 class Instance
27126 {
27127 public:
27128 Instance()
27129 : m_instance(VK_NULL_HANDLE)
27130 {}
27131
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070027132 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027133 : m_instance(VK_NULL_HANDLE)
27134 {}
27135
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027136 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
27137 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027138 {}
27139
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027140#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027141 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027142 {
27143 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027144 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027145 }
27146#endif
27147
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027148 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027149 {
27150 m_instance = VK_NULL_HANDLE;
27151 return *this;
27152 }
27153
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027154 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027155 {
27156 return m_instance == rhs.m_instance;
27157 }
27158
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027159 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027160 {
27161 return m_instance != rhs.m_instance;
27162 }
27163
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027164 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027165 {
27166 return m_instance < rhs.m_instance;
27167 }
27168
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027169 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027171 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027172#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27173
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027174 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027175#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027176 template <typename Allocator = std::allocator<PhysicalDevice>>
27177 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27179
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027180 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027182 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27184
27185#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027186 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027188 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27189#ifndef VULKAN_HPP_NO_SMART_HANDLE
27190 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27191#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027192#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027193#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027194
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027195 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027197 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27198#ifndef VULKAN_HPP_NO_SMART_HANDLE
27199 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & 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
27203#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027204 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027206 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27207#ifndef VULKAN_HPP_NO_SMART_HANDLE
27208 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27209#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027211#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027212
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027213 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027214#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027215 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27217
Mark Young39389872017-01-19 21:10:49 -070027218#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027219 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27221 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27222#ifndef VULKAN_HPP_NO_SMART_HANDLE
27223 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27224#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070027226#endif /*VK_USE_PLATFORM_VI_NN*/
27227
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027228#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027229 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27231 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27232#ifndef VULKAN_HPP_NO_SMART_HANDLE
27233 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27234#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027236#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27237
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027238#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027239 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27241 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27242#ifndef VULKAN_HPP_NO_SMART_HANDLE
27243 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27244#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27245#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027246#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27247
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027248#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027249 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27251 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27252#ifndef VULKAN_HPP_NO_SMART_HANDLE
27253 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27254#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27255#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027256#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27257
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027258#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027259 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27261 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27262#ifndef VULKAN_HPP_NO_SMART_HANDLE
27263 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27264#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027266#endif /*VK_USE_PLATFORM_XCB_KHR*/
27267
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027268 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027270 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27271#ifndef VULKAN_HPP_NO_SMART_HANDLE
27272 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27273#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27275
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027276 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027278 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27280
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027281 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 -060027282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027283 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 -060027284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27285
Mark Young0f183a82017-02-28 09:58:04 -070027286 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
27287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27288 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
27289 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
27290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27291
27292#ifdef VK_USE_PLATFORM_IOS_MVK
27293 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27294#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27295 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27296#ifndef VULKAN_HPP_NO_SMART_HANDLE
27297 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27298#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27300#endif /*VK_USE_PLATFORM_IOS_MVK*/
27301
27302#ifdef VK_USE_PLATFORM_MACOS_MVK
27303 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27305 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27306#ifndef VULKAN_HPP_NO_SMART_HANDLE
27307 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27308#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27310#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27311
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027312
27313
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027314 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027315 {
27316 return m_instance;
27317 }
27318
27319 explicit operator bool() const
27320 {
27321 return m_instance != VK_NULL_HANDLE;
27322 }
27323
27324 bool operator!() const
27325 {
27326 return m_instance == VK_NULL_HANDLE;
27327 }
27328
27329 private:
27330 VkInstance m_instance;
27331 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027332
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027333 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
27334
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027335#ifndef VULKAN_HPP_NO_SMART_HANDLE
27336 class DebugReportCallbackEXTDeleter
27337 {
27338 public:
27339 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27340 : m_instance( instance )
27341 , m_allocator( allocator )
27342 {}
27343
27344 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
27345 {
27346 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
27347 }
27348
27349 private:
27350 Instance m_instance;
27351 Optional<const AllocationCallbacks> m_allocator;
27352 };
27353
27354 class SurfaceKHRDeleter
27355 {
27356 public:
27357 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27358 : m_instance( instance )
27359 , m_allocator( allocator )
27360 {}
27361
27362 void operator()( SurfaceKHR surfaceKHR )
27363 {
27364 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
27365 }
27366
27367 private:
27368 Instance m_instance;
27369 Optional<const AllocationCallbacks> m_allocator;
27370 };
27371#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27372
27373 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
27374 {
27375 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27376 }
27377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27378 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
27379 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027380 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027381 }
27382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27383
27384 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
27385 {
27386 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
27387 }
27388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27389 template <typename Allocator>
27390 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
27391 {
27392 std::vector<PhysicalDevice,Allocator> physicalDevices;
27393 uint32_t physicalDeviceCount;
27394 Result result;
27395 do
27396 {
27397 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
27398 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
27399 {
27400 physicalDevices.resize( physicalDeviceCount );
27401 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
27402 }
27403 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027404 assert( physicalDeviceCount <= physicalDevices.size() );
27405 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027406 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
27407 }
27408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27409
27410 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
27411 {
27412 return vkGetInstanceProcAddr( m_instance, pName );
27413 }
27414#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27415 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27416 {
27417 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27418 }
27419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27420
27421#ifdef VK_USE_PLATFORM_ANDROID_KHR
27422 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27423 {
27424 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27425 }
27426#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27427 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27428 {
27429 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027430 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 Lobodzinski36c33862017-02-13 10:15:53 -070027431 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27432 }
27433#ifndef VULKAN_HPP_NO_SMART_HANDLE
27434 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27435 {
27436 SurfaceKHRDeleter deleter( *this, allocator );
27437 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27438 }
27439#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27441#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27442
27443 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27444 {
27445 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27446 }
27447#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27448 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27449 {
27450 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027451 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 Lobodzinski36c33862017-02-13 10:15:53 -070027452 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27453 }
27454#ifndef VULKAN_HPP_NO_SMART_HANDLE
27455 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27456 {
27457 SurfaceKHRDeleter deleter( *this, allocator );
27458 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27459 }
27460#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27462
27463#ifdef VK_USE_PLATFORM_MIR_KHR
27464 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27465 {
27466 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27467 }
27468#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27469 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27470 {
27471 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027472 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 Lobodzinski36c33862017-02-13 10:15:53 -070027473 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27474 }
27475#ifndef VULKAN_HPP_NO_SMART_HANDLE
27476 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27477 {
27478 SurfaceKHRDeleter deleter( *this, allocator );
27479 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27480 }
27481#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27482#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27483#endif /*VK_USE_PLATFORM_MIR_KHR*/
27484
27485 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27486 {
27487 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27488 }
27489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27490 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27491 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027492 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027493 }
27494#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27495
27496#ifdef VK_USE_PLATFORM_VI_NN
27497 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27498 {
27499 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27500 }
27501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27502 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27503 {
27504 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027505 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 Lobodzinski36c33862017-02-13 10:15:53 -070027506 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27507 }
27508#ifndef VULKAN_HPP_NO_SMART_HANDLE
27509 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27510 {
27511 SurfaceKHRDeleter deleter( *this, allocator );
27512 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27513 }
27514#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27515#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27516#endif /*VK_USE_PLATFORM_VI_NN*/
27517
27518#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27519 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27520 {
27521 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27522 }
27523#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27524 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27525 {
27526 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027527 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 Lobodzinski36c33862017-02-13 10:15:53 -070027528 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27529 }
27530#ifndef VULKAN_HPP_NO_SMART_HANDLE
27531 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27532 {
27533 SurfaceKHRDeleter deleter( *this, allocator );
27534 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27535 }
27536#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27538#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27539
27540#ifdef VK_USE_PLATFORM_WIN32_KHR
27541 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27542 {
27543 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27544 }
27545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27546 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27547 {
27548 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027549 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 Lobodzinski36c33862017-02-13 10:15:53 -070027550 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27551 }
27552#ifndef VULKAN_HPP_NO_SMART_HANDLE
27553 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27554 {
27555 SurfaceKHRDeleter deleter( *this, allocator );
27556 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27557 }
27558#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27560#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27561
27562#ifdef VK_USE_PLATFORM_XLIB_KHR
27563 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27564 {
27565 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27566 }
27567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27568 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27569 {
27570 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027571 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 Lobodzinski36c33862017-02-13 10:15:53 -070027572 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27573 }
27574#ifndef VULKAN_HPP_NO_SMART_HANDLE
27575 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27576 {
27577 SurfaceKHRDeleter deleter( *this, allocator );
27578 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27579 }
27580#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27582#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27583
27584#ifdef VK_USE_PLATFORM_XCB_KHR
27585 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27586 {
27587 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27588 }
27589#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27590 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27591 {
27592 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027593 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 Lobodzinski36c33862017-02-13 10:15:53 -070027594 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27595 }
27596#ifndef VULKAN_HPP_NO_SMART_HANDLE
27597 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27598 {
27599 SurfaceKHRDeleter deleter( *this, allocator );
27600 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27601 }
27602#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27604#endif /*VK_USE_PLATFORM_XCB_KHR*/
27605
27606 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27607 {
27608 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27609 }
27610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27611 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27612 {
27613 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027614 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 Lobodzinski36c33862017-02-13 10:15:53 -070027615 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27616 }
27617#ifndef VULKAN_HPP_NO_SMART_HANDLE
27618 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27619 {
27620 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27621 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27622 }
27623#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27624#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27625
27626 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27627 {
27628 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27629 }
27630#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27631 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27632 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027633 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027634 }
27635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27636
27637 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
27638 {
27639 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27640 }
27641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27642 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
27643 {
27644#ifdef VULKAN_HPP_NO_EXCEPTIONS
27645 assert( layerPrefix.size() == message.size() );
27646#else
27647 if ( layerPrefix.size() != message.size() )
27648 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027649 throw LogicError( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027650 }
27651#endif // VULKAN_HPP_NO_EXCEPTIONS
27652 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27653 }
27654#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027655
27656 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027657 {
Mark Young0f183a82017-02-28 09:58:04 -070027658 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27659 }
27660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27661 template <typename Allocator>
27662 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27663 {
27664 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27665 uint32_t physicalDeviceGroupCount;
27666 Result result;
27667 do
27668 {
27669 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27670 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27671 {
27672 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27673 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27674 }
27675 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027676 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27677 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Young0f183a82017-02-28 09:58:04 -070027678 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27679 }
27680#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27681
27682#ifdef VK_USE_PLATFORM_IOS_MVK
27683 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27684 {
27685 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27686 }
27687#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27688 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27689 {
27690 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027691 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 Young0f183a82017-02-28 09:58:04 -070027692 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27693 }
27694#ifndef VULKAN_HPP_NO_SMART_HANDLE
27695 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27696 {
27697 SurfaceKHRDeleter deleter( *this, allocator );
27698 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27699 }
27700#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27702#endif /*VK_USE_PLATFORM_IOS_MVK*/
27703
27704#ifdef VK_USE_PLATFORM_MACOS_MVK
27705 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27706 {
27707 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27708 }
27709#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27710 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27711 {
27712 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027713 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 Young0f183a82017-02-28 09:58:04 -070027714 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27715 }
27716#ifndef VULKAN_HPP_NO_SMART_HANDLE
27717 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27718 {
27719 SurfaceKHRDeleter deleter( *this, allocator );
27720 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27721 }
27722#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27724#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027725
Mark Young0f183a82017-02-28 09:58:04 -070027726 struct DeviceGroupDeviceCreateInfoKHX
27727 {
27728 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27729 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027730 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027731 , physicalDeviceCount( physicalDeviceCount_ )
27732 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027733 {
27734 }
27735
Mark Young0f183a82017-02-28 09:58:04 -070027736 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027737 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027738 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060027739 }
27740
Mark Young0f183a82017-02-28 09:58:04 -070027741 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027742 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027743 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060027744 return *this;
27745 }
Mark Young0f183a82017-02-28 09:58:04 -070027746 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027747 {
27748 pNext = pNext_;
27749 return *this;
27750 }
27751
Mark Young0f183a82017-02-28 09:58:04 -070027752 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027753 {
Mark Young0f183a82017-02-28 09:58:04 -070027754 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027755 return *this;
27756 }
27757
Mark Young0f183a82017-02-28 09:58:04 -070027758 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027759 {
Mark Young0f183a82017-02-28 09:58:04 -070027760 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027761 return *this;
27762 }
27763
Mark Young0f183a82017-02-28 09:58:04 -070027764 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027765 {
Mark Young0f183a82017-02-28 09:58:04 -070027766 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027767 }
27768
Mark Young0f183a82017-02-28 09:58:04 -070027769 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027770 {
27771 return ( sType == rhs.sType )
27772 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027773 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27774 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027775 }
27776
Mark Young0f183a82017-02-28 09:58:04 -070027777 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027778 {
27779 return !operator==( rhs );
27780 }
27781
27782 private:
27783 StructureType sType;
27784
27785 public:
27786 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027787 uint32_t physicalDeviceCount;
27788 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027789 };
Mark Young0f183a82017-02-28 09:58:04 -070027790 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027791
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027792#ifndef VULKAN_HPP_NO_SMART_HANDLE
27793 class InstanceDeleter;
27794 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27795#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27796
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027797 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027799 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027800#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027801 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027802#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27804
27805#ifndef VULKAN_HPP_NO_SMART_HANDLE
27806 class InstanceDeleter
27807 {
27808 public:
27809 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27810 : m_allocator( allocator )
27811 {}
27812
27813 void operator()( Instance instance )
27814 {
27815 instance.destroy( m_allocator );
27816 }
27817
27818 private:
27819 Optional<const AllocationCallbacks> m_allocator;
27820 };
27821#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27822
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027823 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027824 {
27825 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27826 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027827#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027828 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027829 {
27830 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027831 Result result = static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027832 return createResultValue( result, instance, "vk::createInstance" );
27833 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027834#ifndef VULKAN_HPP_NO_SMART_HANDLE
27835 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27836 {
27837 InstanceDeleter deleter( allocator );
27838 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27839 }
27840#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27842
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027843
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027844 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027845 {
27846 return "(void)";
27847 }
27848
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027849 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027850 {
27851 return "{}";
27852 }
27853
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027854 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027855 {
27856 return "(void)";
27857 }
27858
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027859 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027860 {
27861 return "{}";
27862 }
27863
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027864 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027865 {
27866 return "(void)";
27867 }
27868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027869 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027870 {
27871 return "{}";
27872 }
27873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027874 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027875 {
27876 return "(void)";
27877 }
27878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027879 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027880 {
27881 return "{}";
27882 }
27883
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027884 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027885 {
27886 return "(void)";
27887 }
27888
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027889 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027890 {
27891 return "{}";
27892 }
27893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027894 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027895 {
27896 return "(void)";
27897 }
27898
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027899 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027900 {
27901 return "{}";
27902 }
27903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027904 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027905 {
27906 return "(void)";
27907 }
27908
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027909 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027910 {
27911 return "{}";
27912 }
27913
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027914 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027915 {
27916 return "(void)";
27917 }
27918
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027919 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027920 {
27921 return "{}";
27922 }
27923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027924 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027925 {
27926 return "(void)";
27927 }
27928
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027929 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027930 {
27931 return "{}";
27932 }
27933
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027934 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027935 {
27936 return "(void)";
27937 }
27938
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027939 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027940 {
27941 return "{}";
27942 }
27943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027944 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027945 {
27946 return "(void)";
27947 }
27948
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027949 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027950 {
27951 return "{}";
27952 }
27953
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027954 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027955 {
27956 return "(void)";
27957 }
27958
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027959 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027960 {
27961 return "{}";
27962 }
27963
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027964 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027965 {
27966 return "(void)";
27967 }
27968
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027969 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027970 {
27971 return "{}";
27972 }
27973
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027974 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027975 {
27976 return "(void)";
27977 }
27978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027979 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027980 {
27981 return "{}";
27982 }
27983
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027984 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027985 {
27986 return "(void)";
27987 }
27988
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027989 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027990 {
27991 return "{}";
27992 }
27993
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027994 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027995 {
27996 return "(void)";
27997 }
27998
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027999 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028000 {
28001 return "{}";
28002 }
28003
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028004 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028005 {
28006 return "(void)";
28007 }
28008
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028009 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028010 {
28011 return "{}";
28012 }
28013
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028014 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028015 {
28016 return "(void)";
28017 }
28018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028019 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028020 {
28021 return "{}";
28022 }
28023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028024 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028025 {
28026 return "(void)";
28027 }
28028
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028029 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028030 {
28031 return "{}";
28032 }
28033
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028034 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028035 {
28036 return "(void)";
28037 }
28038
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028039 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028040 {
28041 return "{}";
28042 }
28043
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028044 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028045 {
28046 return "(void)";
28047 }
28048
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028049 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028050 {
28051 return "{}";
28052 }
28053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028054 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028055 {
28056 return "(void)";
28057 }
28058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028059 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028060 {
28061 return "{}";
28062 }
28063
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028064 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028065 {
28066 return "(void)";
28067 }
28068
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028069 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028070 {
28071 return "{}";
28072 }
28073
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028074 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028075 {
28076 return "(void)";
28077 }
28078
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028079 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028080 {
28081 return "{}";
28082 }
28083
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028084 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028085 {
28086 return "(void)";
28087 }
28088
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028089 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028090 {
28091 return "{}";
28092 }
28093
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028094 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028095 {
28096 return "(void)";
28097 }
28098
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028099 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028100 {
28101 return "{}";
28102 }
28103
Mark Young0f183a82017-02-28 09:58:04 -070028104 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028105 {
28106 return "(void)";
28107 }
28108
Mark Young0f183a82017-02-28 09:58:04 -070028109 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028110 {
28111 return "{}";
28112 }
28113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028114 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028115 {
28116 return "(void)";
28117 }
28118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028119 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028120 {
28121 return "{}";
28122 }
28123
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028124 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028125 {
28126 return "(void)";
28127 }
28128
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028129 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028130 {
28131 return "{}";
28132 }
28133
28134#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028135 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028136 {
28137 return "(void)";
28138 }
28139#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28140
28141#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028142 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028143 {
28144 return "{}";
28145 }
28146#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
28147
28148#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028149 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028150 {
28151 return "(void)";
28152 }
28153#endif /*VK_USE_PLATFORM_MIR_KHR*/
28154
28155#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028156 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028157 {
28158 return "{}";
28159 }
28160#endif /*VK_USE_PLATFORM_MIR_KHR*/
28161
Mark Young39389872017-01-19 21:10:49 -070028162#ifdef VK_USE_PLATFORM_VI_NN
28163 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
28164 {
28165 return "(void)";
28166 }
28167#endif /*VK_USE_PLATFORM_VI_NN*/
28168
28169#ifdef VK_USE_PLATFORM_VI_NN
28170 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
28171 {
28172 return "{}";
28173 }
28174#endif /*VK_USE_PLATFORM_VI_NN*/
28175
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028176#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028177 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028178 {
28179 return "(void)";
28180 }
28181#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28182
28183#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028184 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028185 {
28186 return "{}";
28187 }
28188#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
28189
28190#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028191 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028192 {
28193 return "(void)";
28194 }
28195#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28196
28197#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028198 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028199 {
28200 return "{}";
28201 }
28202#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28203
28204#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028205 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028206 {
28207 return "(void)";
28208 }
28209#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28210
28211#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028212 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028213 {
28214 return "{}";
28215 }
28216#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28217
28218#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028219 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028220 {
28221 return "(void)";
28222 }
28223#endif /*VK_USE_PLATFORM_XCB_KHR*/
28224
28225#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028226 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028227 {
28228 return "{}";
28229 }
28230#endif /*VK_USE_PLATFORM_XCB_KHR*/
28231
Mark Young0f183a82017-02-28 09:58:04 -070028232#ifdef VK_USE_PLATFORM_IOS_MVK
28233 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
28234 {
28235 return "(void)";
28236 }
28237#endif /*VK_USE_PLATFORM_IOS_MVK*/
28238
28239#ifdef VK_USE_PLATFORM_IOS_MVK
28240 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
28241 {
28242 return "{}";
28243 }
28244#endif /*VK_USE_PLATFORM_IOS_MVK*/
28245
28246#ifdef VK_USE_PLATFORM_MACOS_MVK
28247 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
28248 {
28249 return "(void)";
28250 }
28251#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28252
28253#ifdef VK_USE_PLATFORM_MACOS_MVK
28254 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
28255 {
28256 return "{}";
28257 }
28258#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28259
Mark Young39389872017-01-19 21:10:49 -070028260 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
28261 {
28262 return "(void)";
28263 }
28264
28265 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
28266 {
28267 return "{}";
28268 }
28269
Mark Young0f183a82017-02-28 09:58:04 -070028270 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
28271 {
28272 return "(void)";
28273 }
28274
28275 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
28276 {
28277 return "{}";
28278 }
28279
28280 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
28281 {
28282 return "(void)";
28283 }
28284
28285 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
28286 {
28287 return "{}";
28288 }
28289
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028290 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028291 {
28292 switch (value)
28293 {
28294 case ImageLayout::eUndefined: return "Undefined";
28295 case ImageLayout::eGeneral: return "General";
28296 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
28297 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
28298 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
28299 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
28300 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
28301 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
28302 case ImageLayout::ePreinitialized: return "Preinitialized";
28303 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060028304 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028305 default: return "invalid";
28306 }
28307 }
28308
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028309 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028310 {
28311 switch (value)
28312 {
28313 case AttachmentLoadOp::eLoad: return "Load";
28314 case AttachmentLoadOp::eClear: return "Clear";
28315 case AttachmentLoadOp::eDontCare: return "DontCare";
28316 default: return "invalid";
28317 }
28318 }
28319
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028320 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028321 {
28322 switch (value)
28323 {
28324 case AttachmentStoreOp::eStore: return "Store";
28325 case AttachmentStoreOp::eDontCare: return "DontCare";
28326 default: return "invalid";
28327 }
28328 }
28329
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028330 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028331 {
28332 switch (value)
28333 {
28334 case ImageType::e1D: return "1D";
28335 case ImageType::e2D: return "2D";
28336 case ImageType::e3D: return "3D";
28337 default: return "invalid";
28338 }
28339 }
28340
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028341 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028342 {
28343 switch (value)
28344 {
28345 case ImageTiling::eOptimal: return "Optimal";
28346 case ImageTiling::eLinear: return "Linear";
28347 default: return "invalid";
28348 }
28349 }
28350
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028351 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028352 {
28353 switch (value)
28354 {
28355 case ImageViewType::e1D: return "1D";
28356 case ImageViewType::e2D: return "2D";
28357 case ImageViewType::e3D: return "3D";
28358 case ImageViewType::eCube: return "Cube";
28359 case ImageViewType::e1DArray: return "1DArray";
28360 case ImageViewType::e2DArray: return "2DArray";
28361 case ImageViewType::eCubeArray: return "CubeArray";
28362 default: return "invalid";
28363 }
28364 }
28365
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028366 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028367 {
28368 switch (value)
28369 {
28370 case CommandBufferLevel::ePrimary: return "Primary";
28371 case CommandBufferLevel::eSecondary: return "Secondary";
28372 default: return "invalid";
28373 }
28374 }
28375
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028376 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028377 {
28378 switch (value)
28379 {
28380 case ComponentSwizzle::eIdentity: return "Identity";
28381 case ComponentSwizzle::eZero: return "Zero";
28382 case ComponentSwizzle::eOne: return "One";
28383 case ComponentSwizzle::eR: return "R";
28384 case ComponentSwizzle::eG: return "G";
28385 case ComponentSwizzle::eB: return "B";
28386 case ComponentSwizzle::eA: return "A";
28387 default: return "invalid";
28388 }
28389 }
28390
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028391 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028392 {
28393 switch (value)
28394 {
28395 case DescriptorType::eSampler: return "Sampler";
28396 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
28397 case DescriptorType::eSampledImage: return "SampledImage";
28398 case DescriptorType::eStorageImage: return "StorageImage";
28399 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
28400 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
28401 case DescriptorType::eUniformBuffer: return "UniformBuffer";
28402 case DescriptorType::eStorageBuffer: return "StorageBuffer";
28403 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
28404 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
28405 case DescriptorType::eInputAttachment: return "InputAttachment";
28406 default: return "invalid";
28407 }
28408 }
28409
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028410 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028411 {
28412 switch (value)
28413 {
28414 case QueryType::eOcclusion: return "Occlusion";
28415 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28416 case QueryType::eTimestamp: return "Timestamp";
28417 default: return "invalid";
28418 }
28419 }
28420
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028421 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028422 {
28423 switch (value)
28424 {
28425 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28426 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28427 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28428 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28429 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28430 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28431 default: return "invalid";
28432 }
28433 }
28434
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028435 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028436 {
28437 switch (value)
28438 {
28439 case PipelineBindPoint::eGraphics: return "Graphics";
28440 case PipelineBindPoint::eCompute: return "Compute";
28441 default: return "invalid";
28442 }
28443 }
28444
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028445 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028446 {
28447 switch (value)
28448 {
28449 case PipelineCacheHeaderVersion::eOne: return "One";
28450 default: return "invalid";
28451 }
28452 }
28453
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028454 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028455 {
28456 switch (value)
28457 {
28458 case PrimitiveTopology::ePointList: return "PointList";
28459 case PrimitiveTopology::eLineList: return "LineList";
28460 case PrimitiveTopology::eLineStrip: return "LineStrip";
28461 case PrimitiveTopology::eTriangleList: return "TriangleList";
28462 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28463 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28464 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28465 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28466 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28467 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28468 case PrimitiveTopology::ePatchList: return "PatchList";
28469 default: return "invalid";
28470 }
28471 }
28472
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028473 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028474 {
28475 switch (value)
28476 {
28477 case SharingMode::eExclusive: return "Exclusive";
28478 case SharingMode::eConcurrent: return "Concurrent";
28479 default: return "invalid";
28480 }
28481 }
28482
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028483 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028484 {
28485 switch (value)
28486 {
28487 case IndexType::eUint16: return "Uint16";
28488 case IndexType::eUint32: return "Uint32";
28489 default: return "invalid";
28490 }
28491 }
28492
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028493 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028494 {
28495 switch (value)
28496 {
28497 case Filter::eNearest: return "Nearest";
28498 case Filter::eLinear: return "Linear";
28499 case Filter::eCubicIMG: return "CubicIMG";
28500 default: return "invalid";
28501 }
28502 }
28503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028504 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028505 {
28506 switch (value)
28507 {
28508 case SamplerMipmapMode::eNearest: return "Nearest";
28509 case SamplerMipmapMode::eLinear: return "Linear";
28510 default: return "invalid";
28511 }
28512 }
28513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028514 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028515 {
28516 switch (value)
28517 {
28518 case SamplerAddressMode::eRepeat: return "Repeat";
28519 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28520 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28521 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28522 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28523 default: return "invalid";
28524 }
28525 }
28526
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028527 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028528 {
28529 switch (value)
28530 {
28531 case CompareOp::eNever: return "Never";
28532 case CompareOp::eLess: return "Less";
28533 case CompareOp::eEqual: return "Equal";
28534 case CompareOp::eLessOrEqual: return "LessOrEqual";
28535 case CompareOp::eGreater: return "Greater";
28536 case CompareOp::eNotEqual: return "NotEqual";
28537 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28538 case CompareOp::eAlways: return "Always";
28539 default: return "invalid";
28540 }
28541 }
28542
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028543 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028544 {
28545 switch (value)
28546 {
28547 case PolygonMode::eFill: return "Fill";
28548 case PolygonMode::eLine: return "Line";
28549 case PolygonMode::ePoint: return "Point";
28550 default: return "invalid";
28551 }
28552 }
28553
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028554 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028555 {
28556 switch (value)
28557 {
28558 case CullModeFlagBits::eNone: return "None";
28559 case CullModeFlagBits::eFront: return "Front";
28560 case CullModeFlagBits::eBack: return "Back";
28561 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28562 default: return "invalid";
28563 }
28564 }
28565
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028566 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028567 {
28568 if (!value) return "{}";
28569 std::string result;
28570 if (value & CullModeFlagBits::eNone) result += "None | ";
28571 if (value & CullModeFlagBits::eFront) result += "Front | ";
28572 if (value & CullModeFlagBits::eBack) result += "Back | ";
28573 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28574 return "{" + result.substr(0, result.size() - 3) + "}";
28575 }
28576
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028577 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028578 {
28579 switch (value)
28580 {
28581 case FrontFace::eCounterClockwise: return "CounterClockwise";
28582 case FrontFace::eClockwise: return "Clockwise";
28583 default: return "invalid";
28584 }
28585 }
28586
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028587 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028588 {
28589 switch (value)
28590 {
28591 case BlendFactor::eZero: return "Zero";
28592 case BlendFactor::eOne: return "One";
28593 case BlendFactor::eSrcColor: return "SrcColor";
28594 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28595 case BlendFactor::eDstColor: return "DstColor";
28596 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28597 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28598 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28599 case BlendFactor::eDstAlpha: return "DstAlpha";
28600 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28601 case BlendFactor::eConstantColor: return "ConstantColor";
28602 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28603 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28604 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28605 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28606 case BlendFactor::eSrc1Color: return "Src1Color";
28607 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28608 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28609 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28610 default: return "invalid";
28611 }
28612 }
28613
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028614 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028615 {
28616 switch (value)
28617 {
28618 case BlendOp::eAdd: return "Add";
28619 case BlendOp::eSubtract: return "Subtract";
28620 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28621 case BlendOp::eMin: return "Min";
28622 case BlendOp::eMax: return "Max";
28623 default: return "invalid";
28624 }
28625 }
28626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028627 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028628 {
28629 switch (value)
28630 {
28631 case StencilOp::eKeep: return "Keep";
28632 case StencilOp::eZero: return "Zero";
28633 case StencilOp::eReplace: return "Replace";
28634 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28635 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28636 case StencilOp::eInvert: return "Invert";
28637 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28638 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28639 default: return "invalid";
28640 }
28641 }
28642
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028643 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028644 {
28645 switch (value)
28646 {
28647 case LogicOp::eClear: return "Clear";
28648 case LogicOp::eAnd: return "And";
28649 case LogicOp::eAndReverse: return "AndReverse";
28650 case LogicOp::eCopy: return "Copy";
28651 case LogicOp::eAndInverted: return "AndInverted";
28652 case LogicOp::eNoOp: return "NoOp";
28653 case LogicOp::eXor: return "Xor";
28654 case LogicOp::eOr: return "Or";
28655 case LogicOp::eNor: return "Nor";
28656 case LogicOp::eEquivalent: return "Equivalent";
28657 case LogicOp::eInvert: return "Invert";
28658 case LogicOp::eOrReverse: return "OrReverse";
28659 case LogicOp::eCopyInverted: return "CopyInverted";
28660 case LogicOp::eOrInverted: return "OrInverted";
28661 case LogicOp::eNand: return "Nand";
28662 case LogicOp::eSet: return "Set";
28663 default: return "invalid";
28664 }
28665 }
28666
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028667 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028668 {
28669 switch (value)
28670 {
28671 case InternalAllocationType::eExecutable: return "Executable";
28672 default: return "invalid";
28673 }
28674 }
28675
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028676 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028677 {
28678 switch (value)
28679 {
28680 case SystemAllocationScope::eCommand: return "Command";
28681 case SystemAllocationScope::eObject: return "Object";
28682 case SystemAllocationScope::eCache: return "Cache";
28683 case SystemAllocationScope::eDevice: return "Device";
28684 case SystemAllocationScope::eInstance: return "Instance";
28685 default: return "invalid";
28686 }
28687 }
28688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028689 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028690 {
28691 switch (value)
28692 {
28693 case PhysicalDeviceType::eOther: return "Other";
28694 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28695 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28696 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28697 case PhysicalDeviceType::eCpu: return "Cpu";
28698 default: return "invalid";
28699 }
28700 }
28701
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028702 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028703 {
28704 switch (value)
28705 {
28706 case VertexInputRate::eVertex: return "Vertex";
28707 case VertexInputRate::eInstance: return "Instance";
28708 default: return "invalid";
28709 }
28710 }
28711
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028712 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028713 {
28714 switch (value)
28715 {
28716 case Format::eUndefined: return "Undefined";
28717 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28718 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28719 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28720 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28721 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28722 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28723 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28724 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28725 case Format::eR8Unorm: return "R8Unorm";
28726 case Format::eR8Snorm: return "R8Snorm";
28727 case Format::eR8Uscaled: return "R8Uscaled";
28728 case Format::eR8Sscaled: return "R8Sscaled";
28729 case Format::eR8Uint: return "R8Uint";
28730 case Format::eR8Sint: return "R8Sint";
28731 case Format::eR8Srgb: return "R8Srgb";
28732 case Format::eR8G8Unorm: return "R8G8Unorm";
28733 case Format::eR8G8Snorm: return "R8G8Snorm";
28734 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28735 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28736 case Format::eR8G8Uint: return "R8G8Uint";
28737 case Format::eR8G8Sint: return "R8G8Sint";
28738 case Format::eR8G8Srgb: return "R8G8Srgb";
28739 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28740 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28741 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28742 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28743 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28744 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28745 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28746 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28747 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28748 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28749 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28750 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28751 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28752 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28753 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28754 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28755 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28756 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28757 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28758 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28759 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28760 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28761 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28762 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28763 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28764 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28765 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28766 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28767 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28768 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28769 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28770 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28771 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28772 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28773 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28774 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28775 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28776 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28777 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28778 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28779 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28780 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28781 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28782 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28783 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28784 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28785 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28786 case Format::eR16Unorm: return "R16Unorm";
28787 case Format::eR16Snorm: return "R16Snorm";
28788 case Format::eR16Uscaled: return "R16Uscaled";
28789 case Format::eR16Sscaled: return "R16Sscaled";
28790 case Format::eR16Uint: return "R16Uint";
28791 case Format::eR16Sint: return "R16Sint";
28792 case Format::eR16Sfloat: return "R16Sfloat";
28793 case Format::eR16G16Unorm: return "R16G16Unorm";
28794 case Format::eR16G16Snorm: return "R16G16Snorm";
28795 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28796 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28797 case Format::eR16G16Uint: return "R16G16Uint";
28798 case Format::eR16G16Sint: return "R16G16Sint";
28799 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28800 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28801 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28802 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28803 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28804 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28805 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28806 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28807 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28808 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28809 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28810 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28811 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28812 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28813 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28814 case Format::eR32Uint: return "R32Uint";
28815 case Format::eR32Sint: return "R32Sint";
28816 case Format::eR32Sfloat: return "R32Sfloat";
28817 case Format::eR32G32Uint: return "R32G32Uint";
28818 case Format::eR32G32Sint: return "R32G32Sint";
28819 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28820 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28821 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28822 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28823 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28824 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28825 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28826 case Format::eR64Uint: return "R64Uint";
28827 case Format::eR64Sint: return "R64Sint";
28828 case Format::eR64Sfloat: return "R64Sfloat";
28829 case Format::eR64G64Uint: return "R64G64Uint";
28830 case Format::eR64G64Sint: return "R64G64Sint";
28831 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28832 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28833 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28834 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28835 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28836 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28837 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28838 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28839 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28840 case Format::eD16Unorm: return "D16Unorm";
28841 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28842 case Format::eD32Sfloat: return "D32Sfloat";
28843 case Format::eS8Uint: return "S8Uint";
28844 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28845 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28846 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28847 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28848 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28849 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28850 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28851 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28852 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28853 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28854 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28855 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28856 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28857 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28858 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28859 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28860 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28861 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28862 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28863 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28864 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28865 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28866 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28867 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28868 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28869 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28870 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28871 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28872 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28873 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28874 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28875 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28876 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28877 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28878 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28879 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28880 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28881 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28882 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28883 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28884 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28885 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28886 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28887 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28888 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28889 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28890 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28891 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28892 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28893 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28894 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28895 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28896 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28897 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28898 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28899 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28900 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028901 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28902 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28903 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28904 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28905 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28906 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28907 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28908 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028909 default: return "invalid";
28910 }
28911 }
28912
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028913 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028914 {
28915 switch (value)
28916 {
28917 case StructureType::eApplicationInfo: return "ApplicationInfo";
28918 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28919 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28920 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28921 case StructureType::eSubmitInfo: return "SubmitInfo";
28922 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28923 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28924 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28925 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28926 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28927 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28928 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28929 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28930 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28931 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28932 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28933 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28934 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28935 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28936 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28937 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28938 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28939 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28940 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28941 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28942 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28943 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28944 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28945 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28946 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28947 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28948 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28949 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28950 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28951 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28952 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28953 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28954 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28955 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28956 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28957 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28958 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28959 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28960 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28961 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28962 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28963 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28964 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28965 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28966 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
28967 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
28968 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
28969 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
28970 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
28971 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
28972 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
28973 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
28974 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
28975 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
28976 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
28977 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
28978 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
28979 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
28980 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
28981 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
28982 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
28983 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
28984 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028985 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070028986 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
28987 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
28988 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060028989 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
28990 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
28991 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
28992 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
28993 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028994 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
28995 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
28996 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
28997 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
28998 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
28999 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
29000 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
29001 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
29002 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070029003 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
29004 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
29005 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
29006 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
29007 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
29008 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
29009 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
29010 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
29011 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
29012 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
29013 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
29014 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
29015 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060029016 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070029017 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070029018 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
29019 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
29020 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
29021 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
29022 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
29023 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
29024 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Young0f183a82017-02-28 09:58:04 -070029025 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
29026 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
29027 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
29028 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
29029 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
29030 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
29031 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
29032 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
29033 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
29034 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
29035 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
29036 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
29037 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
29038 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
29039 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
29040 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
29041 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060029042 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070029043 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029044 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
29045 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
29046 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
29047 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
29048 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
29049 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070029050 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070029051 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
29052 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
29053 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
29054 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
29055 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029056 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070029057 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
29058 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
29059 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
29060 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029061 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060029062 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
29063 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
29064 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
29065 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070029066 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
29067 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029068 default: return "invalid";
29069 }
29070 }
29071
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029072 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029073 {
29074 switch (value)
29075 {
29076 case SubpassContents::eInline: return "Inline";
29077 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
29078 default: return "invalid";
29079 }
29080 }
29081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029082 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029083 {
29084 switch (value)
29085 {
29086 case DynamicState::eViewport: return "Viewport";
29087 case DynamicState::eScissor: return "Scissor";
29088 case DynamicState::eLineWidth: return "LineWidth";
29089 case DynamicState::eDepthBias: return "DepthBias";
29090 case DynamicState::eBlendConstants: return "BlendConstants";
29091 case DynamicState::eDepthBounds: return "DepthBounds";
29092 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
29093 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
29094 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070029095 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
29096 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
29097 default: return "invalid";
29098 }
29099 }
29100
29101 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
29102 {
29103 switch (value)
29104 {
29105 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
29106 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029107 default: return "invalid";
29108 }
29109 }
29110
Mark Lobodzinski54385432017-05-15 10:27:52 -060029111 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
29112 {
29113 switch (value)
29114 {
29115 case ObjectType::eUnknown: return "Unknown";
29116 case ObjectType::eInstance: return "Instance";
29117 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
29118 case ObjectType::eDevice: return "Device";
29119 case ObjectType::eQueue: return "Queue";
29120 case ObjectType::eSemaphore: return "Semaphore";
29121 case ObjectType::eCommandBuffer: return "CommandBuffer";
29122 case ObjectType::eFence: return "Fence";
29123 case ObjectType::eDeviceMemory: return "DeviceMemory";
29124 case ObjectType::eBuffer: return "Buffer";
29125 case ObjectType::eImage: return "Image";
29126 case ObjectType::eEvent: return "Event";
29127 case ObjectType::eQueryPool: return "QueryPool";
29128 case ObjectType::eBufferView: return "BufferView";
29129 case ObjectType::eImageView: return "ImageView";
29130 case ObjectType::eShaderModule: return "ShaderModule";
29131 case ObjectType::ePipelineCache: return "PipelineCache";
29132 case ObjectType::ePipelineLayout: return "PipelineLayout";
29133 case ObjectType::eRenderPass: return "RenderPass";
29134 case ObjectType::ePipeline: return "Pipeline";
29135 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
29136 case ObjectType::eSampler: return "Sampler";
29137 case ObjectType::eDescriptorPool: return "DescriptorPool";
29138 case ObjectType::eDescriptorSet: return "DescriptorSet";
29139 case ObjectType::eFramebuffer: return "Framebuffer";
29140 case ObjectType::eCommandPool: return "CommandPool";
29141 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
29142 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
29143 case ObjectType::eDisplayKHR: return "DisplayKHR";
29144 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
29145 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
29146 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
29147 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
29148 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
29149 default: return "invalid";
29150 }
29151 }
29152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029153 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029154 {
29155 switch (value)
29156 {
29157 case QueueFlagBits::eGraphics: return "Graphics";
29158 case QueueFlagBits::eCompute: return "Compute";
29159 case QueueFlagBits::eTransfer: return "Transfer";
29160 case QueueFlagBits::eSparseBinding: return "SparseBinding";
29161 default: return "invalid";
29162 }
29163 }
29164
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029165 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029166 {
29167 if (!value) return "{}";
29168 std::string result;
29169 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
29170 if (value & QueueFlagBits::eCompute) result += "Compute | ";
29171 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
29172 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
29173 return "{" + result.substr(0, result.size() - 3) + "}";
29174 }
29175
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029176 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029177 {
29178 switch (value)
29179 {
29180 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
29181 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
29182 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
29183 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
29184 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
29185 default: return "invalid";
29186 }
29187 }
29188
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029189 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029190 {
29191 if (!value) return "{}";
29192 std::string result;
29193 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
29194 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
29195 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
29196 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
29197 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
29198 return "{" + result.substr(0, result.size() - 3) + "}";
29199 }
29200
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029201 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029202 {
29203 switch (value)
29204 {
29205 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070029206 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029207 default: return "invalid";
29208 }
29209 }
29210
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029211 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029212 {
29213 if (!value) return "{}";
29214 std::string result;
29215 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070029216 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029217 return "{" + result.substr(0, result.size() - 3) + "}";
29218 }
29219
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029220 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029221 {
29222 switch (value)
29223 {
29224 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
29225 case AccessFlagBits::eIndexRead: return "IndexRead";
29226 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
29227 case AccessFlagBits::eUniformRead: return "UniformRead";
29228 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
29229 case AccessFlagBits::eShaderRead: return "ShaderRead";
29230 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
29231 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
29232 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
29233 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
29234 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
29235 case AccessFlagBits::eTransferRead: return "TransferRead";
29236 case AccessFlagBits::eTransferWrite: return "TransferWrite";
29237 case AccessFlagBits::eHostRead: return "HostRead";
29238 case AccessFlagBits::eHostWrite: return "HostWrite";
29239 case AccessFlagBits::eMemoryRead: return "MemoryRead";
29240 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029241 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
29242 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029243 default: return "invalid";
29244 }
29245 }
29246
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029247 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029248 {
29249 if (!value) return "{}";
29250 std::string result;
29251 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
29252 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
29253 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
29254 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
29255 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
29256 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
29257 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
29258 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
29259 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
29260 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
29261 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
29262 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
29263 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
29264 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
29265 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
29266 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
29267 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029268 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
29269 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029270 return "{" + result.substr(0, result.size() - 3) + "}";
29271 }
29272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029273 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029274 {
29275 switch (value)
29276 {
29277 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
29278 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
29279 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29280 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29281 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
29282 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
29283 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
29284 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
29285 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
29286 default: return "invalid";
29287 }
29288 }
29289
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029290 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029291 {
29292 if (!value) return "{}";
29293 std::string result;
29294 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29295 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
29296 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29297 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29298 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
29299 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
29300 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
29301 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29302 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
29303 return "{" + result.substr(0, result.size() - 3) + "}";
29304 }
29305
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029306 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029307 {
29308 switch (value)
29309 {
29310 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
29311 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
29312 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
29313 default: return "invalid";
29314 }
29315 }
29316
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029317 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029318 {
29319 if (!value) return "{}";
29320 std::string result;
29321 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29322 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29323 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29324 return "{" + result.substr(0, result.size() - 3) + "}";
29325 }
29326
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029327 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029328 {
29329 switch (value)
29330 {
29331 case ShaderStageFlagBits::eVertex: return "Vertex";
29332 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
29333 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
29334 case ShaderStageFlagBits::eGeometry: return "Geometry";
29335 case ShaderStageFlagBits::eFragment: return "Fragment";
29336 case ShaderStageFlagBits::eCompute: return "Compute";
29337 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
29338 case ShaderStageFlagBits::eAll: return "All";
29339 default: return "invalid";
29340 }
29341 }
29342
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029343 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029344 {
29345 if (!value) return "{}";
29346 std::string result;
29347 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
29348 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
29349 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
29350 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
29351 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
29352 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
29353 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29354 if (value & ShaderStageFlagBits::eAll) result += "All | ";
29355 return "{" + result.substr(0, result.size() - 3) + "}";
29356 }
29357
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029358 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029359 {
29360 switch (value)
29361 {
29362 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
29363 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
29364 case ImageUsageFlagBits::eSampled: return "Sampled";
29365 case ImageUsageFlagBits::eStorage: return "Storage";
29366 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
29367 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29368 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
29369 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
29370 default: return "invalid";
29371 }
29372 }
29373
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029374 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029375 {
29376 if (!value) return "{}";
29377 std::string result;
29378 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29379 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
29380 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
29381 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
29382 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
29383 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29384 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
29385 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
29386 return "{" + result.substr(0, result.size() - 3) + "}";
29387 }
29388
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029389 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029390 {
29391 switch (value)
29392 {
29393 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
29394 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
29395 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
29396 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
29397 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070029398 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070029399 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029400 default: return "invalid";
29401 }
29402 }
29403
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029404 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029405 {
29406 if (!value) return "{}";
29407 std::string result;
29408 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29409 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29410 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29411 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
29412 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070029413 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070029414 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029415 return "{" + result.substr(0, result.size() - 3) + "}";
29416 }
29417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029418 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029419 {
29420 switch (value)
29421 {
29422 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
29423 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
29424 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070029425 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
29426 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029427 default: return "invalid";
29428 }
29429 }
29430
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029431 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029432 {
29433 if (!value) return "{}";
29434 std::string result;
29435 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
29436 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
29437 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070029438 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
29439 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029440 return "{" + result.substr(0, result.size() - 3) + "}";
29441 }
29442
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029443 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029444 {
29445 switch (value)
29446 {
29447 case ColorComponentFlagBits::eR: return "R";
29448 case ColorComponentFlagBits::eG: return "G";
29449 case ColorComponentFlagBits::eB: return "B";
29450 case ColorComponentFlagBits::eA: return "A";
29451 default: return "invalid";
29452 }
29453 }
29454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029455 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029456 {
29457 if (!value) return "{}";
29458 std::string result;
29459 if (value & ColorComponentFlagBits::eR) result += "R | ";
29460 if (value & ColorComponentFlagBits::eG) result += "G | ";
29461 if (value & ColorComponentFlagBits::eB) result += "B | ";
29462 if (value & ColorComponentFlagBits::eA) result += "A | ";
29463 return "{" + result.substr(0, result.size() - 3) + "}";
29464 }
29465
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029466 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029467 {
29468 switch (value)
29469 {
29470 case FenceCreateFlagBits::eSignaled: return "Signaled";
29471 default: return "invalid";
29472 }
29473 }
29474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029475 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029476 {
29477 if (!value) return "{}";
29478 std::string result;
29479 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29480 return "{" + result.substr(0, result.size() - 3) + "}";
29481 }
29482
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029483 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029484 {
29485 switch (value)
29486 {
29487 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29488 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29489 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29490 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29491 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29492 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29493 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29494 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29495 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29496 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29497 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29498 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29499 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29500 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029501 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29502 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029503 default: return "invalid";
29504 }
29505 }
29506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029507 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029508 {
29509 if (!value) return "{}";
29510 std::string result;
29511 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29512 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29513 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29514 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29515 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29516 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29517 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29518 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29519 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29520 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29521 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29522 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29523 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29524 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029525 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29526 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029527 return "{" + result.substr(0, result.size() - 3) + "}";
29528 }
29529
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029530 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029531 {
29532 switch (value)
29533 {
29534 case QueryControlFlagBits::ePrecise: return "Precise";
29535 default: return "invalid";
29536 }
29537 }
29538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029539 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029540 {
29541 if (!value) return "{}";
29542 std::string result;
29543 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29544 return "{" + result.substr(0, result.size() - 3) + "}";
29545 }
29546
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029547 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029548 {
29549 switch (value)
29550 {
29551 case QueryResultFlagBits::e64: return "64";
29552 case QueryResultFlagBits::eWait: return "Wait";
29553 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29554 case QueryResultFlagBits::ePartial: return "Partial";
29555 default: return "invalid";
29556 }
29557 }
29558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029559 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029560 {
29561 if (!value) return "{}";
29562 std::string result;
29563 if (value & QueryResultFlagBits::e64) result += "64 | ";
29564 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29565 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29566 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29567 return "{" + result.substr(0, result.size() - 3) + "}";
29568 }
29569
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029570 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029571 {
29572 switch (value)
29573 {
29574 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29575 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29576 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29577 default: return "invalid";
29578 }
29579 }
29580
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029581 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029582 {
29583 if (!value) return "{}";
29584 std::string result;
29585 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29586 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29587 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29588 return "{" + result.substr(0, result.size() - 3) + "}";
29589 }
29590
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029591 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029592 {
29593 switch (value)
29594 {
29595 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29596 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29597 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29598 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29599 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29600 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29601 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29602 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29603 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29604 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29605 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29606 default: return "invalid";
29607 }
29608 }
29609
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029610 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029611 {
29612 if (!value) return "{}";
29613 std::string result;
29614 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29615 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29616 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29617 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29618 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29619 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29620 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29621 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29622 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29623 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29624 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29625 return "{" + result.substr(0, result.size() - 3) + "}";
29626 }
29627
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029628 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029629 {
29630 switch (value)
29631 {
29632 case ImageAspectFlagBits::eColor: return "Color";
29633 case ImageAspectFlagBits::eDepth: return "Depth";
29634 case ImageAspectFlagBits::eStencil: return "Stencil";
29635 case ImageAspectFlagBits::eMetadata: return "Metadata";
29636 default: return "invalid";
29637 }
29638 }
29639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029640 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029641 {
29642 if (!value) return "{}";
29643 std::string result;
29644 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29645 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29646 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29647 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29648 return "{" + result.substr(0, result.size() - 3) + "}";
29649 }
29650
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029651 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029652 {
29653 switch (value)
29654 {
29655 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29656 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29657 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29658 default: return "invalid";
29659 }
29660 }
29661
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029662 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029663 {
29664 if (!value) return "{}";
29665 std::string result;
29666 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29667 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29668 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29669 return "{" + result.substr(0, result.size() - 3) + "}";
29670 }
29671
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029672 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029673 {
29674 switch (value)
29675 {
29676 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29677 default: return "invalid";
29678 }
29679 }
29680
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029681 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029682 {
29683 if (!value) return "{}";
29684 std::string result;
29685 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29686 return "{" + result.substr(0, result.size() - 3) + "}";
29687 }
29688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029689 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029690 {
29691 switch (value)
29692 {
29693 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29694 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29695 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29696 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29697 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29698 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29699 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29700 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29701 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29702 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29703 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29704 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29705 case PipelineStageFlagBits::eTransfer: return "Transfer";
29706 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29707 case PipelineStageFlagBits::eHost: return "Host";
29708 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29709 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029710 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029711 default: return "invalid";
29712 }
29713 }
29714
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029715 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029716 {
29717 if (!value) return "{}";
29718 std::string result;
29719 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29720 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29721 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29722 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29723 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29724 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29725 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29726 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29727 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29728 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29729 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29730 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29731 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29732 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29733 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29734 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29735 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029736 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029737 return "{" + result.substr(0, result.size() - 3) + "}";
29738 }
29739
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029740 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029741 {
29742 switch (value)
29743 {
29744 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29745 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29746 default: return "invalid";
29747 }
29748 }
29749
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029750 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029751 {
29752 if (!value) return "{}";
29753 std::string result;
29754 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29755 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29756 return "{" + result.substr(0, result.size() - 3) + "}";
29757 }
29758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029759 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029760 {
29761 switch (value)
29762 {
29763 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29764 default: return "invalid";
29765 }
29766 }
29767
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029768 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029769 {
29770 if (!value) return "{}";
29771 std::string result;
29772 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29773 return "{" + result.substr(0, result.size() - 3) + "}";
29774 }
29775
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029776 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029777 {
29778 switch (value)
29779 {
29780 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29781 default: return "invalid";
29782 }
29783 }
29784
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029785 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029786 {
29787 if (!value) return "{}";
29788 std::string result;
29789 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29790 return "{" + result.substr(0, result.size() - 3) + "}";
29791 }
29792
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029793 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029794 {
29795 switch (value)
29796 {
29797 case SampleCountFlagBits::e1: return "1";
29798 case SampleCountFlagBits::e2: return "2";
29799 case SampleCountFlagBits::e4: return "4";
29800 case SampleCountFlagBits::e8: return "8";
29801 case SampleCountFlagBits::e16: return "16";
29802 case SampleCountFlagBits::e32: return "32";
29803 case SampleCountFlagBits::e64: return "64";
29804 default: return "invalid";
29805 }
29806 }
29807
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029808 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029809 {
29810 if (!value) return "{}";
29811 std::string result;
29812 if (value & SampleCountFlagBits::e1) result += "1 | ";
29813 if (value & SampleCountFlagBits::e2) result += "2 | ";
29814 if (value & SampleCountFlagBits::e4) result += "4 | ";
29815 if (value & SampleCountFlagBits::e8) result += "8 | ";
29816 if (value & SampleCountFlagBits::e16) result += "16 | ";
29817 if (value & SampleCountFlagBits::e32) result += "32 | ";
29818 if (value & SampleCountFlagBits::e64) result += "64 | ";
29819 return "{" + result.substr(0, result.size() - 3) + "}";
29820 }
29821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029822 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029823 {
29824 switch (value)
29825 {
29826 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29827 default: return "invalid";
29828 }
29829 }
29830
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029831 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029832 {
29833 if (!value) return "{}";
29834 std::string result;
29835 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29836 return "{" + result.substr(0, result.size() - 3) + "}";
29837 }
29838
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029839 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029840 {
29841 switch (value)
29842 {
29843 case StencilFaceFlagBits::eFront: return "Front";
29844 case StencilFaceFlagBits::eBack: return "Back";
29845 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29846 default: return "invalid";
29847 }
29848 }
29849
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029850 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029851 {
29852 if (!value) return "{}";
29853 std::string result;
29854 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29855 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29856 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29857 return "{" + result.substr(0, result.size() - 3) + "}";
29858 }
29859
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029860 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029861 {
29862 switch (value)
29863 {
29864 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29865 default: return "invalid";
29866 }
29867 }
29868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029869 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029870 {
29871 if (!value) return "{}";
29872 std::string result;
29873 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29874 return "{" + result.substr(0, result.size() - 3) + "}";
29875 }
29876
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029877 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029878 {
29879 switch (value)
29880 {
29881 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029882 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29883 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029884 default: return "invalid";
29885 }
29886 }
29887
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029888 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029889 {
29890 if (!value) return "{}";
29891 std::string result;
29892 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029893 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29894 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029895 return "{" + result.substr(0, result.size() - 3) + "}";
29896 }
29897
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029898 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029899 {
29900 switch (value)
29901 {
29902 case PresentModeKHR::eImmediate: return "Immediate";
29903 case PresentModeKHR::eMailbox: return "Mailbox";
29904 case PresentModeKHR::eFifo: return "Fifo";
29905 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060029906 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
29907 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029908 default: return "invalid";
29909 }
29910 }
29911
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029912 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029913 {
29914 switch (value)
29915 {
29916 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029917 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
29918 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
29919 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
29920 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
29921 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
29922 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
29923 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
29924 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
29925 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
29926 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
29927 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
29928 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
29929 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029930 default: return "invalid";
29931 }
29932 }
29933
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029934 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029935 {
29936 switch (value)
29937 {
29938 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29939 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29940 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29941 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29942 default: return "invalid";
29943 }
29944 }
29945
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029946 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029947 {
29948 if (!value) return "{}";
29949 std::string result;
29950 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29951 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29952 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29953 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29954 return "{" + result.substr(0, result.size() - 3) + "}";
29955 }
29956
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029957 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029958 {
29959 switch (value)
29960 {
29961 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29962 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29963 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29964 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29965 default: return "invalid";
29966 }
29967 }
29968
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029969 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029970 {
29971 if (!value) return "{}";
29972 std::string result;
29973 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29974 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
29975 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
29976 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
29977 return "{" + result.substr(0, result.size() - 3) + "}";
29978 }
29979
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029980 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029981 {
29982 switch (value)
29983 {
29984 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
29985 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
29986 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
29987 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
29988 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
29989 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
29990 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
29991 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
29992 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
29993 default: return "invalid";
29994 }
29995 }
29996
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029997 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029998 {
29999 if (!value) return "{}";
30000 std::string result;
30001 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
30002 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
30003 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
30004 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
30005 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
30006 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
30007 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
30008 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
30009 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
30010 return "{" + result.substr(0, result.size() - 3) + "}";
30011 }
30012
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030013 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030014 {
30015 switch (value)
30016 {
30017 case DebugReportFlagBitsEXT::eInformation: return "Information";
30018 case DebugReportFlagBitsEXT::eWarning: return "Warning";
30019 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
30020 case DebugReportFlagBitsEXT::eError: return "Error";
30021 case DebugReportFlagBitsEXT::eDebug: return "Debug";
30022 default: return "invalid";
30023 }
30024 }
30025
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030026 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030027 {
30028 if (!value) return "{}";
30029 std::string result;
30030 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
30031 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
30032 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
30033 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
30034 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
30035 return "{" + result.substr(0, result.size() - 3) + "}";
30036 }
30037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030038 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030039 {
30040 switch (value)
30041 {
30042 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
30043 case DebugReportObjectTypeEXT::eInstance: return "Instance";
30044 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
30045 case DebugReportObjectTypeEXT::eDevice: return "Device";
30046 case DebugReportObjectTypeEXT::eQueue: return "Queue";
30047 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
30048 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
30049 case DebugReportObjectTypeEXT::eFence: return "Fence";
30050 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
30051 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
30052 case DebugReportObjectTypeEXT::eImage: return "Image";
30053 case DebugReportObjectTypeEXT::eEvent: return "Event";
30054 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
30055 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
30056 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
30057 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
30058 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
30059 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
30060 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
30061 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
30062 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
30063 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
30064 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
30065 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
30066 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
30067 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
30068 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
30069 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030070 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030071 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
30072 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
30073 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
30074 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski54385432017-05-15 10:27:52 -060030075 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030076 default: return "invalid";
30077 }
30078 }
30079
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030080 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030081 {
30082 switch (value)
30083 {
30084 case RasterizationOrderAMD::eStrict: return "Strict";
30085 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
30086 default: return "invalid";
30087 }
30088 }
30089
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030090 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030091 {
30092 switch (value)
30093 {
30094 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
30095 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30096 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
30097 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
30098 default: return "invalid";
30099 }
30100 }
30101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030102 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030103 {
30104 if (!value) return "{}";
30105 std::string result;
30106 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
30107 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30108 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
30109 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
30110 return "{" + result.substr(0, result.size() - 3) + "}";
30111 }
30112
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030113 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030114 {
30115 switch (value)
30116 {
30117 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
30118 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
30119 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
30120 default: return "invalid";
30121 }
30122 }
30123
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030124 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060030125 {
30126 if (!value) return "{}";
30127 std::string result;
30128 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
30129 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
30130 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
30131 return "{" + result.substr(0, result.size() - 3) + "}";
30132 }
30133
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030134 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060030135 {
30136 switch (value)
30137 {
30138 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030139 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060030140 default: return "invalid";
30141 }
30142 }
30143
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030144 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
30145 {
30146 switch (value)
30147 {
30148 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
30149 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
30150 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
30151 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
30152 default: return "invalid";
30153 }
30154 }
30155
30156 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
30157 {
30158 if (!value) return "{}";
30159 std::string result;
30160 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
30161 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
30162 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
30163 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
30164 return "{" + result.substr(0, result.size() - 3) + "}";
30165 }
30166
30167 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
30168 {
30169 switch (value)
30170 {
30171 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
30172 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
30173 default: return "invalid";
30174 }
30175 }
30176
30177 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
30178 {
30179 if (!value) return "{}";
30180 std::string result;
30181 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
30182 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
30183 return "{" + result.substr(0, result.size() - 3) + "}";
30184 }
30185
30186 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
30187 {
30188 switch (value)
30189 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060030190 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
30191 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
30192 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
30193 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
30194 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
30195 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
30196 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
30197 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030198 default: return "invalid";
30199 }
30200 }
30201
30202 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
30203 {
30204 switch (value)
30205 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060030206 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
30207 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
30208 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
30209 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
30210 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030211 default: return "invalid";
30212 }
30213 }
30214
Mark Young0f183a82017-02-28 09:58:04 -070030215 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
30216 {
30217 switch (value)
30218 {
30219 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
30220 default: return "invalid";
30221 }
30222 }
30223
30224 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
30225 {
30226 if (!value) return "{}";
30227 std::string result;
30228 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
30229 return "{" + result.substr(0, result.size() - 3) + "}";
30230 }
30231
30232 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
30233 {
30234 switch (value)
30235 {
30236 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30237 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30238 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30239 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
30240 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
30241 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
30242 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
30243 default: return "invalid";
30244 }
30245 }
30246
30247 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
30248 {
30249 if (!value) return "{}";
30250 std::string result;
30251 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30252 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30253 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30254 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
30255 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
30256 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
30257 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
30258 return "{" + result.substr(0, result.size() - 3) + "}";
30259 }
30260
30261 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
30262 {
30263 switch (value)
30264 {
30265 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
30266 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
30267 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
30268 default: return "invalid";
30269 }
30270 }
30271
30272 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
30273 {
30274 if (!value) return "{}";
30275 std::string result;
30276 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
30277 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30278 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30279 return "{" + result.substr(0, result.size() - 3) + "}";
30280 }
30281
30282 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
30283 {
30284 switch (value)
30285 {
30286 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30287 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30288 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30289 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
30290 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
30291 default: return "invalid";
30292 }
30293 }
30294
30295 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
30296 {
30297 if (!value) return "{}";
30298 std::string result;
30299 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30300 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30301 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30302 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
30303 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
30304 return "{" + result.substr(0, result.size() - 3) + "}";
30305 }
30306
30307 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
30308 {
30309 switch (value)
30310 {
30311 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
30312 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
30313 default: return "invalid";
30314 }
30315 }
30316
30317 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
30318 {
30319 if (!value) return "{}";
30320 std::string result;
30321 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30322 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30323 return "{" + result.substr(0, result.size() - 3) + "}";
30324 }
30325
Mark Young39389872017-01-19 21:10:49 -070030326 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
30327 {
30328 switch (value)
30329 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060030330 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070030331 default: return "invalid";
30332 }
30333 }
30334
30335 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
30336 {
30337 if (!value) return "{}";
30338 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030339 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070030340 return "{" + result.substr(0, result.size() - 3) + "}";
30341 }
30342
30343 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
30344 {
30345 switch (value)
30346 {
30347 case DisplayPowerStateEXT::eOff: return "Off";
30348 case DisplayPowerStateEXT::eSuspend: return "Suspend";
30349 case DisplayPowerStateEXT::eOn: return "On";
30350 default: return "invalid";
30351 }
30352 }
30353
30354 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
30355 {
30356 switch (value)
30357 {
30358 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
30359 default: return "invalid";
30360 }
30361 }
30362
30363 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
30364 {
30365 switch (value)
30366 {
30367 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
30368 default: return "invalid";
30369 }
30370 }
30371
Mark Young0f183a82017-02-28 09:58:04 -070030372 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
30373 {
30374 switch (value)
30375 {
30376 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
30377 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
30378 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
30379 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
30380 default: return "invalid";
30381 }
30382 }
30383
30384 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
30385 {
30386 if (!value) return "{}";
30387 std::string result;
30388 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
30389 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
30390 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
30391 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
30392 return "{" + result.substr(0, result.size() - 3) + "}";
30393 }
30394
30395 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
30396 {
30397 switch (value)
30398 {
30399 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
30400 default: return "invalid";
30401 }
30402 }
30403
30404 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
30405 {
30406 if (!value) return "{}";
30407 std::string result;
30408 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
30409 return "{" + result.substr(0, result.size() - 3) + "}";
30410 }
30411
30412 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
30413 {
30414 switch (value)
30415 {
30416 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
30417 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
30418 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
30419 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
30420 default: return "invalid";
30421 }
30422 }
30423
30424 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
30425 {
30426 if (!value) return "{}";
30427 std::string result;
30428 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
30429 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
30430 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
30431 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
30432 return "{" + result.substr(0, result.size() - 3) + "}";
30433 }
30434
30435 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
30436 {
30437 switch (value)
30438 {
30439 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
30440 default: return "invalid";
30441 }
30442 }
30443
30444 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
30445 {
30446 if (!value) return "{}";
30447 std::string result;
30448 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
30449 return "{" + result.substr(0, result.size() - 3) + "}";
30450 }
30451
30452 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
30453 {
30454 switch (value)
30455 {
30456 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
30457 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
30458 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
30459 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
30460 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
30461 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
30462 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
30463 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
30464 default: return "invalid";
30465 }
30466 }
30467
30468 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
30469 {
30470 switch (value)
30471 {
30472 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30473 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30474 default: return "invalid";
30475 }
30476 }
30477
30478 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30479 {
30480 switch (value)
30481 {
30482 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30483 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30484 default: return "invalid";
30485 }
30486 }
30487
30488 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30489 {
30490 if (!value) return "{}";
30491 std::string result;
30492 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30493 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30494 return "{" + result.substr(0, result.size() - 3) + "}";
30495 }
30496
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030497} // namespace vk
30498
30499#endif