blob: ebb3ffef203ac97782ceb20d2b60f37bcddc3158 [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
24
25#ifndef VULKAN_HPP
26#define VULKAN_HPP
27
28#include <algorithm>
29#include <array>
30#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032#include <cstdint>
33#include <cstring>
34#include <initializer_list>
35#include <string>
36#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070037#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060038#include <type_traits>
39#include <vulkan/vulkan.h>
40#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
41# include <memory>
42# include <vector>
43#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
44
Mark Lobodzinskic45c9bf2017-04-17 12:28:27 -060045static_assert( VK_HEADER_VERSION == 48 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060046
47// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
48// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020049#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 -070050# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
51# define VULKAN_HPP_TYPESAFE_CONVERSION
52# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060053#endif
54
55#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
56# if defined(__clang__)
57# if __has_feature(cxx_unrestricted_unions)
58# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
59# endif
60# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060061# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060062# if 40600 <= GCC_VERSION
63# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
64# endif
65# elif defined(_MSC_VER)
66# if 1900 <= _MSC_VER
67# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
68# endif
69# endif
70#endif
71
Mark Lobodzinski2d589822016-12-12 09:44:34 -070072#if !defined(VULKAN_HPP_INLINE)
73# if defined(__clang___)
74# if __has_attribute(always_inline)
75# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
76# else
77# define VULKAN_HPP_INLINE inline
78# endif
79# elif defined(__GNUC__)
80# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
81# elif defined(_MSC_VER)
82# define VULKAN_HPP_INLINE __forceinline
83# else
84# define VULKAN_HPP_INLINE inline
85# endif
86#endif
87
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070088#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
89# define VULKAN_HPP_TYPESAFE_EXPLICIT
90#else
91# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
92#endif
93
Lenny Komowbed9b5c2016-08-11 11:23:15 -060094namespace vk
95{
Mark Lobodzinski2d589822016-12-12 09:44:34 -070096 template <typename FlagBitsType> struct FlagTraits
97 {
98 enum { allFlags = 0 };
99 };
100
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600101 template <typename BitType, typename MaskType = VkFlags>
102 class Flags
103 {
104 public:
105 Flags()
106 : m_mask(0)
107 {
108 }
109
110 Flags(BitType bit)
111 : m_mask(static_cast<MaskType>(bit))
112 {
113 }
114
115 Flags(Flags<BitType> const& rhs)
116 : m_mask(rhs.m_mask)
117 {
118 }
119
120 Flags<BitType> & operator=(Flags<BitType> const& rhs)
121 {
122 m_mask = rhs.m_mask;
123 return *this;
124 }
125
126 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
127 {
128 m_mask |= rhs.m_mask;
129 return *this;
130 }
131
132 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
133 {
134 m_mask &= rhs.m_mask;
135 return *this;
136 }
137
138 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
139 {
140 m_mask ^= rhs.m_mask;
141 return *this;
142 }
143
144 Flags<BitType> operator|(Flags<BitType> const& rhs) const
145 {
146 Flags<BitType> result(*this);
147 result |= rhs;
148 return result;
149 }
150
151 Flags<BitType> operator&(Flags<BitType> const& rhs) const
152 {
153 Flags<BitType> result(*this);
154 result &= rhs;
155 return result;
156 }
157
158 Flags<BitType> operator^(Flags<BitType> const& rhs) const
159 {
160 Flags<BitType> result(*this);
161 result ^= rhs;
162 return result;
163 }
164
165 bool operator!() const
166 {
167 return !m_mask;
168 }
169
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700170 Flags<BitType> operator~() const
171 {
172 Flags<BitType> result(*this);
173 result.m_mask ^= FlagTraits<BitType>::allFlags;
174 return result;
175 }
176
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600177 bool operator==(Flags<BitType> const& rhs) const
178 {
179 return m_mask == rhs.m_mask;
180 }
181
182 bool operator!=(Flags<BitType> const& rhs) const
183 {
184 return m_mask != rhs.m_mask;
185 }
186
187 explicit operator bool() const
188 {
189 return !!m_mask;
190 }
191
192 explicit operator MaskType() const
193 {
194 return m_mask;
195 }
196
197 private:
198 MaskType m_mask;
199 };
200
201 template <typename BitType>
202 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
203 {
204 return flags | bit;
205 }
206
207 template <typename BitType>
208 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
209 {
210 return flags & bit;
211 }
212
213 template <typename BitType>
214 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
215 {
216 return flags ^ bit;
217 }
218
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700219
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600220 template <typename RefType>
221 class Optional
222 {
223 public:
224 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700225 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600226 Optional(std::nullptr_t) { m_ptr = nullptr; }
227
228 operator RefType*() const { return m_ptr; }
229 RefType const* operator->() const { return m_ptr; }
230 explicit operator bool() const { return !!m_ptr; }
231
232 private:
233 RefType *m_ptr;
234 };
235
236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
237 template <typename T>
238 class ArrayProxy
239 {
240 public:
241 ArrayProxy(std::nullptr_t)
242 : m_count(0)
243 , m_ptr(nullptr)
244 {}
245
246 ArrayProxy(T & ptr)
247 : m_count(1)
248 , m_ptr(&ptr)
249 {}
250
251 ArrayProxy(uint32_t count, T * ptr)
252 : m_count(count)
253 , m_ptr(ptr)
254 {}
255
256 template <size_t N>
257 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
258 : m_count(N)
259 , m_ptr(data.data())
260 {}
261
262 template <size_t N>
263 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
264 : m_count(N)
265 , m_ptr(data.data())
266 {}
267
268 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
269 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
270 : m_count(static_cast<uint32_t>(data.size()))
271 , m_ptr(data.data())
272 {}
273
274 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
275 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
276 : m_count(static_cast<uint32_t>(data.size()))
277 , m_ptr(data.data())
278 {}
279
280 ArrayProxy(std::initializer_list<T> const& data)
281 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
282 , m_ptr(data.begin())
283 {}
284
285 const T * begin() const
286 {
287 return m_ptr;
288 }
289
290 const T * end() const
291 {
292 return m_ptr + m_count;
293 }
294
295 const T & front() const
296 {
297 assert(m_count && m_ptr);
298 return *m_ptr;
299 }
300
301 const T & back() const
302 {
303 assert(m_count && m_ptr);
304 return *(m_ptr + m_count - 1);
305 }
306
307 bool empty() const
308 {
309 return (m_count == 0);
310 }
311
312 uint32_t size() const
313 {
314 return m_count;
315 }
316
317 T * data() const
318 {
319 return m_ptr;
320 }
321
322 private:
323 uint32_t m_count;
324 T * m_ptr;
325 };
326#endif
327
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700328
329#if defined(VULKAN_HPP_NO_EXCEPTIONS) && !defined(VULKAN_HPP_NO_SMART_HANDLE)
330# define VULKAN_HPP_NO_SMART_HANDLE
331#endif
332
333#ifndef VULKAN_HPP_NO_SMART_HANDLE
334 template <typename Type, typename Deleter>
335 class UniqueHandle
336 {
337 public:
338 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
339 : m_value( value )
340 , m_deleter( deleter )
341 {}
342
343 UniqueHandle( UniqueHandle const& ) = delete;
344
345 UniqueHandle( UniqueHandle && other )
346 : m_value( other.release() )
347 , m_deleter( std::move( other.m_deleter ) )
348 {}
349
350 ~UniqueHandle()
351 {
352 destroy();
353 }
354
355 UniqueHandle & operator=( UniqueHandle const& ) = delete;
356
357 UniqueHandle & operator=( UniqueHandle && other )
358 {
359 reset( other.release() );
360 m_deleter = std::move( other.m_deleter );
361 return *this;
362 }
363
364 explicit operator bool() const
365 {
366 return m_value.operator bool();
367 }
368
369 Type const* operator->() const
370 {
371 return &m_value;
372 }
373
374 Type const& operator*() const
375 {
376 return m_value;
377 }
378
379 Type get() const
380 {
381 return m_value;
382 }
383
384 Deleter & getDeleter()
385 {
386 return m_deleter;
387 }
388
389 Deleter const& getDeleter() const
390 {
391 return m_deleter;
392 }
393
394 void reset( Type const& value = Type() )
395 {
396 if ( m_value != value )
397 {
398 destroy();
399 m_value = value;
400 }
401 }
402
403 Type release()
404 {
405 Type value = m_value;
406 m_value = nullptr;
407 return value;
408 }
409
410 void swap( UniqueHandle<Type, Deleter> & rhs )
411 {
412 std::swap(m_value, rhs.m_value);
413 std::swap(m_deleter, rhs.m_deleter);
414 }
415
416 private:
417 void destroy()
418 {
419 if ( m_value )
420 {
421 m_deleter( m_value );
422 }
423 }
424
425 private:
426 Type m_value;
427 Deleter m_deleter;
428 };
429
430 template <typename Type, typename Deleter>
431 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
432 {
433 lhs.swap( rhs );
434 }
435#endif
436
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600437 enum class Result
438 {
439 eSuccess = VK_SUCCESS,
440 eNotReady = VK_NOT_READY,
441 eTimeout = VK_TIMEOUT,
442 eEventSet = VK_EVENT_SET,
443 eEventReset = VK_EVENT_RESET,
444 eIncomplete = VK_INCOMPLETE,
445 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
446 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
447 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
448 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
449 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
450 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
451 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
452 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
453 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
454 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
455 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600456 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600457 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
458 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
459 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
460 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
461 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
462 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700463 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700464 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
465 eErrorInvalidExternalHandleKHX = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600466 };
467
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700468 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600469 {
470 switch (value)
471 {
472 case Result::eSuccess: return "Success";
473 case Result::eNotReady: return "NotReady";
474 case Result::eTimeout: return "Timeout";
475 case Result::eEventSet: return "EventSet";
476 case Result::eEventReset: return "EventReset";
477 case Result::eIncomplete: return "Incomplete";
478 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
479 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
480 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
481 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
482 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
483 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
484 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
485 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
486 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
487 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
488 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600489 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600490 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
491 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
492 case Result::eSuboptimalKHR: return "SuboptimalKHR";
493 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
494 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
495 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
496 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700497 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Young0f183a82017-02-28 09:58:04 -0700498 case Result::eErrorInvalidExternalHandleKHX: return "ErrorInvalidExternalHandleKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600499 default: return "invalid";
500 }
501 }
502
503#if defined(_MSC_VER) && (_MSC_VER == 1800)
504# define noexcept _NOEXCEPT
505#endif
506
507 class ErrorCategoryImpl : public std::error_category
508 {
509 public:
510 virtual const char* name() const noexcept override { return "vk::Result"; }
511 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
512 };
513
514#if defined(_MSC_VER) && (_MSC_VER == 1800)
515# undef noexcept
516#endif
517
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700518 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600519 {
520 static ErrorCategoryImpl instance;
521 return instance;
522 }
523
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700524 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600525 {
526 return std::error_code(static_cast<int>(e), errorCategory());
527 }
528
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700529 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600530 {
531 return std::error_condition(static_cast<int>(e), errorCategory());
532 }
533
534} // namespace vk
535
536namespace std
537{
538 template <>
539 struct is_error_code_enum<vk::Result> : public true_type
540 {};
541}
542
543namespace vk
544{
545 template <typename T>
546 struct ResultValue
547 {
548 ResultValue( Result r, T & v )
549 : result( r )
550 , value( v )
551 {}
552
553 Result result;
554 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700555
556 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600557 };
558
559 template <typename T>
560 struct ResultValueType
561 {
562#ifdef VULKAN_HPP_NO_EXCEPTIONS
563 typedef ResultValue<T> type;
564#else
565 typedef T type;
566#endif
567 };
568
569 template <> struct ResultValueType<void>
570 {
571#ifdef VULKAN_HPP_NO_EXCEPTIONS
572 typedef Result type;
573#else
574 typedef void type;
575#endif
576 };
577
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700578 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600579 {
580#ifdef VULKAN_HPP_NO_EXCEPTIONS
581 assert( result == Result::eSuccess );
582 return result;
583#else
584 if ( result != Result::eSuccess )
585 {
586 throw std::system_error( result, message );
587 }
588#endif
589 }
590
591 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700592 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600593 {
594#ifdef VULKAN_HPP_NO_EXCEPTIONS
595 assert( result == Result::eSuccess );
596 return ResultValue<T>( result, data );
597#else
598 if ( result != Result::eSuccess )
599 {
600 throw std::system_error( result, message );
601 }
602 return data;
603#endif
604 }
605
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700606 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600607 {
608#ifdef VULKAN_HPP_NO_EXCEPTIONS
609 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
610#else
611 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
612 {
613 throw std::system_error( result, message );
614 }
615#endif
616 return result;
617 }
618
619 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700620 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 -0600621 {
622#ifdef VULKAN_HPP_NO_EXCEPTIONS
623 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
624#else
625 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
626 {
627 throw std::system_error( result, message );
628 }
629#endif
630 return ResultValue<T>( result, data );
631 }
632
633 using SampleMask = uint32_t;
634
635 using Bool32 = uint32_t;
636
637 using DeviceSize = uint64_t;
638
639 enum class FramebufferCreateFlagBits
640 {
641 };
642
643 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
644
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700645 VULKAN_HPP_INLINE FramebufferCreateFlags operator|( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600646 {
647 return FramebufferCreateFlags( bit0 ) | bit1;
648 }
649
650 enum class QueryPoolCreateFlagBits
651 {
652 };
653
654 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
655
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700656 VULKAN_HPP_INLINE QueryPoolCreateFlags operator|( QueryPoolCreateFlagBits bit0, QueryPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600657 {
658 return QueryPoolCreateFlags( bit0 ) | bit1;
659 }
660
661 enum class RenderPassCreateFlagBits
662 {
663 };
664
665 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
666
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700667 VULKAN_HPP_INLINE RenderPassCreateFlags operator|( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600668 {
669 return RenderPassCreateFlags( bit0 ) | bit1;
670 }
671
672 enum class SamplerCreateFlagBits
673 {
674 };
675
676 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
677
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700678 VULKAN_HPP_INLINE SamplerCreateFlags operator|( SamplerCreateFlagBits bit0, SamplerCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600679 {
680 return SamplerCreateFlags( bit0 ) | bit1;
681 }
682
683 enum class PipelineLayoutCreateFlagBits
684 {
685 };
686
687 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
688
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700689 VULKAN_HPP_INLINE PipelineLayoutCreateFlags operator|( PipelineLayoutCreateFlagBits bit0, PipelineLayoutCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600690 {
691 return PipelineLayoutCreateFlags( bit0 ) | bit1;
692 }
693
694 enum class PipelineCacheCreateFlagBits
695 {
696 };
697
698 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
699
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700700 VULKAN_HPP_INLINE PipelineCacheCreateFlags operator|( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600701 {
702 return PipelineCacheCreateFlags( bit0 ) | bit1;
703 }
704
705 enum class PipelineDepthStencilStateCreateFlagBits
706 {
707 };
708
709 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
710
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700711 VULKAN_HPP_INLINE PipelineDepthStencilStateCreateFlags operator|( PipelineDepthStencilStateCreateFlagBits bit0, PipelineDepthStencilStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600712 {
713 return PipelineDepthStencilStateCreateFlags( bit0 ) | bit1;
714 }
715
716 enum class PipelineDynamicStateCreateFlagBits
717 {
718 };
719
720 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
721
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700722 VULKAN_HPP_INLINE PipelineDynamicStateCreateFlags operator|( PipelineDynamicStateCreateFlagBits bit0, PipelineDynamicStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600723 {
724 return PipelineDynamicStateCreateFlags( bit0 ) | bit1;
725 }
726
727 enum class PipelineColorBlendStateCreateFlagBits
728 {
729 };
730
731 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
732
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700733 VULKAN_HPP_INLINE PipelineColorBlendStateCreateFlags operator|( PipelineColorBlendStateCreateFlagBits bit0, PipelineColorBlendStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600734 {
735 return PipelineColorBlendStateCreateFlags( bit0 ) | bit1;
736 }
737
738 enum class PipelineMultisampleStateCreateFlagBits
739 {
740 };
741
742 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
743
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700744 VULKAN_HPP_INLINE PipelineMultisampleStateCreateFlags operator|( PipelineMultisampleStateCreateFlagBits bit0, PipelineMultisampleStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600745 {
746 return PipelineMultisampleStateCreateFlags( bit0 ) | bit1;
747 }
748
749 enum class PipelineRasterizationStateCreateFlagBits
750 {
751 };
752
753 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
754
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700755 VULKAN_HPP_INLINE PipelineRasterizationStateCreateFlags operator|( PipelineRasterizationStateCreateFlagBits bit0, PipelineRasterizationStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600756 {
757 return PipelineRasterizationStateCreateFlags( bit0 ) | bit1;
758 }
759
760 enum class PipelineViewportStateCreateFlagBits
761 {
762 };
763
764 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
765
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700766 VULKAN_HPP_INLINE PipelineViewportStateCreateFlags operator|( PipelineViewportStateCreateFlagBits bit0, PipelineViewportStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600767 {
768 return PipelineViewportStateCreateFlags( bit0 ) | bit1;
769 }
770
771 enum class PipelineTessellationStateCreateFlagBits
772 {
773 };
774
775 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
776
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700777 VULKAN_HPP_INLINE PipelineTessellationStateCreateFlags operator|( PipelineTessellationStateCreateFlagBits bit0, PipelineTessellationStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600778 {
779 return PipelineTessellationStateCreateFlags( bit0 ) | bit1;
780 }
781
782 enum class PipelineInputAssemblyStateCreateFlagBits
783 {
784 };
785
786 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
787
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700788 VULKAN_HPP_INLINE PipelineInputAssemblyStateCreateFlags operator|( PipelineInputAssemblyStateCreateFlagBits bit0, PipelineInputAssemblyStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600789 {
790 return PipelineInputAssemblyStateCreateFlags( bit0 ) | bit1;
791 }
792
793 enum class PipelineVertexInputStateCreateFlagBits
794 {
795 };
796
797 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
798
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700799 VULKAN_HPP_INLINE PipelineVertexInputStateCreateFlags operator|( PipelineVertexInputStateCreateFlagBits bit0, PipelineVertexInputStateCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600800 {
801 return PipelineVertexInputStateCreateFlags( bit0 ) | bit1;
802 }
803
804 enum class PipelineShaderStageCreateFlagBits
805 {
806 };
807
808 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
809
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700810 VULKAN_HPP_INLINE PipelineShaderStageCreateFlags operator|( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600811 {
812 return PipelineShaderStageCreateFlags( bit0 ) | bit1;
813 }
814
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600815 enum class BufferViewCreateFlagBits
816 {
817 };
818
819 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
820
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700821 VULKAN_HPP_INLINE BufferViewCreateFlags operator|( BufferViewCreateFlagBits bit0, BufferViewCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600822 {
823 return BufferViewCreateFlags( bit0 ) | bit1;
824 }
825
826 enum class InstanceCreateFlagBits
827 {
828 };
829
830 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
831
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700832 VULKAN_HPP_INLINE InstanceCreateFlags operator|( InstanceCreateFlagBits bit0, InstanceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600833 {
834 return InstanceCreateFlags( bit0 ) | bit1;
835 }
836
837 enum class DeviceCreateFlagBits
838 {
839 };
840
841 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
842
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700843 VULKAN_HPP_INLINE DeviceCreateFlags operator|( DeviceCreateFlagBits bit0, DeviceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600844 {
845 return DeviceCreateFlags( bit0 ) | bit1;
846 }
847
848 enum class DeviceQueueCreateFlagBits
849 {
850 };
851
852 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
853
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700854 VULKAN_HPP_INLINE DeviceQueueCreateFlags operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600855 {
856 return DeviceQueueCreateFlags( bit0 ) | bit1;
857 }
858
859 enum class ImageViewCreateFlagBits
860 {
861 };
862
863 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
864
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700865 VULKAN_HPP_INLINE ImageViewCreateFlags operator|( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600866 {
867 return ImageViewCreateFlags( bit0 ) | bit1;
868 }
869
870 enum class SemaphoreCreateFlagBits
871 {
872 };
873
874 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
875
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700876 VULKAN_HPP_INLINE SemaphoreCreateFlags operator|( SemaphoreCreateFlagBits bit0, SemaphoreCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600877 {
878 return SemaphoreCreateFlags( bit0 ) | bit1;
879 }
880
881 enum class ShaderModuleCreateFlagBits
882 {
883 };
884
885 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
886
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700887 VULKAN_HPP_INLINE ShaderModuleCreateFlags operator|( ShaderModuleCreateFlagBits bit0, ShaderModuleCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600888 {
889 return ShaderModuleCreateFlags( bit0 ) | bit1;
890 }
891
892 enum class EventCreateFlagBits
893 {
894 };
895
896 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
897
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700898 VULKAN_HPP_INLINE EventCreateFlags operator|( EventCreateFlagBits bit0, EventCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600899 {
900 return EventCreateFlags( bit0 ) | bit1;
901 }
902
903 enum class MemoryMapFlagBits
904 {
905 };
906
907 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
908
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700909 VULKAN_HPP_INLINE MemoryMapFlags operator|( MemoryMapFlagBits bit0, MemoryMapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600910 {
911 return MemoryMapFlags( bit0 ) | bit1;
912 }
913
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600914 enum class DescriptorPoolResetFlagBits
915 {
916 };
917
918 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
919
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700920 VULKAN_HPP_INLINE DescriptorPoolResetFlags operator|( DescriptorPoolResetFlagBits bit0, DescriptorPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600921 {
922 return DescriptorPoolResetFlags( bit0 ) | bit1;
923 }
924
Mark Young0f183a82017-02-28 09:58:04 -0700925 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600926 {
927 };
928
Mark Young0f183a82017-02-28 09:58:04 -0700929 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600930
Mark Young0f183a82017-02-28 09:58:04 -0700931 VULKAN_HPP_INLINE DescriptorUpdateTemplateCreateFlagsKHR operator|( DescriptorUpdateTemplateCreateFlagBitsKHR bit0, DescriptorUpdateTemplateCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600932 {
Mark Young0f183a82017-02-28 09:58:04 -0700933 return DescriptorUpdateTemplateCreateFlagsKHR( bit0 ) | bit1;
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600934 }
935
936 enum class DisplayModeCreateFlagBitsKHR
937 {
938 };
939
940 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
941
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700942 VULKAN_HPP_INLINE DisplayModeCreateFlagsKHR operator|( DisplayModeCreateFlagBitsKHR bit0, DisplayModeCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600943 {
944 return DisplayModeCreateFlagsKHR( bit0 ) | bit1;
945 }
946
947 enum class DisplaySurfaceCreateFlagBitsKHR
948 {
949 };
950
951 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
952
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700953 VULKAN_HPP_INLINE DisplaySurfaceCreateFlagsKHR operator|( DisplaySurfaceCreateFlagBitsKHR bit0, DisplaySurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600954 {
955 return DisplaySurfaceCreateFlagsKHR( bit0 ) | bit1;
956 }
957
958#ifdef VK_USE_PLATFORM_ANDROID_KHR
959 enum class AndroidSurfaceCreateFlagBitsKHR
960 {
961 };
962#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
963
964#ifdef VK_USE_PLATFORM_ANDROID_KHR
965 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
966
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700967 VULKAN_HPP_INLINE AndroidSurfaceCreateFlagsKHR operator|( AndroidSurfaceCreateFlagBitsKHR bit0, AndroidSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600968 {
969 return AndroidSurfaceCreateFlagsKHR( bit0 ) | bit1;
970 }
971#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
972
973#ifdef VK_USE_PLATFORM_MIR_KHR
974 enum class MirSurfaceCreateFlagBitsKHR
975 {
976 };
977#endif /*VK_USE_PLATFORM_MIR_KHR*/
978
979#ifdef VK_USE_PLATFORM_MIR_KHR
980 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
981
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700982 VULKAN_HPP_INLINE MirSurfaceCreateFlagsKHR operator|( MirSurfaceCreateFlagBitsKHR bit0, MirSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600983 {
984 return MirSurfaceCreateFlagsKHR( bit0 ) | bit1;
985 }
986#endif /*VK_USE_PLATFORM_MIR_KHR*/
987
Mark Young39389872017-01-19 21:10:49 -0700988#ifdef VK_USE_PLATFORM_VI_NN
989 enum class ViSurfaceCreateFlagBitsNN
990 {
991 };
992#endif /*VK_USE_PLATFORM_VI_NN*/
993
994#ifdef VK_USE_PLATFORM_VI_NN
995 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
996
997 VULKAN_HPP_INLINE ViSurfaceCreateFlagsNN operator|( ViSurfaceCreateFlagBitsNN bit0, ViSurfaceCreateFlagBitsNN bit1 )
998 {
999 return ViSurfaceCreateFlagsNN( bit0 ) | bit1;
1000 }
1001#endif /*VK_USE_PLATFORM_VI_NN*/
1002
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001003#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1004 enum class WaylandSurfaceCreateFlagBitsKHR
1005 {
1006 };
1007#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1008
1009#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1010 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
1011
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001012 VULKAN_HPP_INLINE WaylandSurfaceCreateFlagsKHR operator|( WaylandSurfaceCreateFlagBitsKHR bit0, WaylandSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001013 {
1014 return WaylandSurfaceCreateFlagsKHR( bit0 ) | bit1;
1015 }
1016#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1017
1018#ifdef VK_USE_PLATFORM_WIN32_KHR
1019 enum class Win32SurfaceCreateFlagBitsKHR
1020 {
1021 };
1022#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1023
1024#ifdef VK_USE_PLATFORM_WIN32_KHR
1025 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
1026
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001027 VULKAN_HPP_INLINE Win32SurfaceCreateFlagsKHR operator|( Win32SurfaceCreateFlagBitsKHR bit0, Win32SurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001028 {
1029 return Win32SurfaceCreateFlagsKHR( bit0 ) | bit1;
1030 }
1031#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1032
1033#ifdef VK_USE_PLATFORM_XLIB_KHR
1034 enum class XlibSurfaceCreateFlagBitsKHR
1035 {
1036 };
1037#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1038
1039#ifdef VK_USE_PLATFORM_XLIB_KHR
1040 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
1041
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001042 VULKAN_HPP_INLINE XlibSurfaceCreateFlagsKHR operator|( XlibSurfaceCreateFlagBitsKHR bit0, XlibSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001043 {
1044 return XlibSurfaceCreateFlagsKHR( bit0 ) | bit1;
1045 }
1046#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1047
1048#ifdef VK_USE_PLATFORM_XCB_KHR
1049 enum class XcbSurfaceCreateFlagBitsKHR
1050 {
1051 };
1052#endif /*VK_USE_PLATFORM_XCB_KHR*/
1053
1054#ifdef VK_USE_PLATFORM_XCB_KHR
1055 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
1056
Mark Lobodzinski2d589822016-12-12 09:44:34 -07001057 VULKAN_HPP_INLINE XcbSurfaceCreateFlagsKHR operator|( XcbSurfaceCreateFlagBitsKHR bit0, XcbSurfaceCreateFlagBitsKHR bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001058 {
1059 return XcbSurfaceCreateFlagsKHR( bit0 ) | bit1;
1060 }
1061#endif /*VK_USE_PLATFORM_XCB_KHR*/
1062
Mark Young0f183a82017-02-28 09:58:04 -07001063#ifdef VK_USE_PLATFORM_IOS_MVK
1064 enum class IOSSurfaceCreateFlagBitsMVK
1065 {
1066 };
1067#endif /*VK_USE_PLATFORM_IOS_MVK*/
1068
1069#ifdef VK_USE_PLATFORM_IOS_MVK
1070 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
1071
1072 VULKAN_HPP_INLINE IOSSurfaceCreateFlagsMVK operator|( IOSSurfaceCreateFlagBitsMVK bit0, IOSSurfaceCreateFlagBitsMVK bit1 )
1073 {
1074 return IOSSurfaceCreateFlagsMVK( bit0 ) | bit1;
1075 }
1076#endif /*VK_USE_PLATFORM_IOS_MVK*/
1077
1078#ifdef VK_USE_PLATFORM_MACOS_MVK
1079 enum class MacOSSurfaceCreateFlagBitsMVK
1080 {
1081 };
1082#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1083
1084#ifdef VK_USE_PLATFORM_MACOS_MVK
1085 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
1086
1087 VULKAN_HPP_INLINE MacOSSurfaceCreateFlagsMVK operator|( MacOSSurfaceCreateFlagBitsMVK bit0, MacOSSurfaceCreateFlagBitsMVK bit1 )
1088 {
1089 return MacOSSurfaceCreateFlagsMVK( bit0 ) | bit1;
1090 }
1091#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1092
Mark Young39389872017-01-19 21:10:49 -07001093 enum class CommandPoolTrimFlagBitsKHR
1094 {
1095 };
1096
1097 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1098
1099 VULKAN_HPP_INLINE CommandPoolTrimFlagsKHR operator|( CommandPoolTrimFlagBitsKHR bit0, CommandPoolTrimFlagBitsKHR bit1 )
1100 {
1101 return CommandPoolTrimFlagsKHR( bit0 ) | bit1;
1102 }
1103
Mark Young0f183a82017-02-28 09:58:04 -07001104 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1105 {
1106 };
1107
1108 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1109
1110 VULKAN_HPP_INLINE PipelineViewportSwizzleStateCreateFlagsNV operator|( PipelineViewportSwizzleStateCreateFlagBitsNV bit0, PipelineViewportSwizzleStateCreateFlagBitsNV bit1 )
1111 {
1112 return PipelineViewportSwizzleStateCreateFlagsNV( bit0 ) | bit1;
1113 }
1114
1115 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1116 {
1117 };
1118
1119 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1120
1121 VULKAN_HPP_INLINE PipelineDiscardRectangleStateCreateFlagsEXT operator|( PipelineDiscardRectangleStateCreateFlagBitsEXT bit0, PipelineDiscardRectangleStateCreateFlagBitsEXT bit1 )
1122 {
1123 return PipelineDiscardRectangleStateCreateFlagsEXT( bit0 ) | bit1;
1124 }
1125
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001126 class DeviceMemory
1127 {
1128 public:
1129 DeviceMemory()
1130 : m_deviceMemory(VK_NULL_HANDLE)
1131 {}
1132
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001133 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001134 : m_deviceMemory(VK_NULL_HANDLE)
1135 {}
1136
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001137 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001138 : m_deviceMemory(deviceMemory)
1139 {}
1140
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001141#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001142 DeviceMemory& operator=(VkDeviceMemory deviceMemory)
1143 {
1144 m_deviceMemory = deviceMemory;
1145 return *this;
1146 }
1147#endif
1148
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001149 DeviceMemory& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001150 {
1151 m_deviceMemory = VK_NULL_HANDLE;
1152 return *this;
1153 }
1154
Lenny Komowebf33162016-08-26 14:10:08 -06001155 bool operator==(DeviceMemory const &rhs) const
1156 {
1157 return m_deviceMemory == rhs.m_deviceMemory;
1158 }
1159
1160 bool operator!=(DeviceMemory const &rhs) const
1161 {
1162 return m_deviceMemory != rhs.m_deviceMemory;
1163 }
1164
1165 bool operator<(DeviceMemory const &rhs) const
1166 {
1167 return m_deviceMemory < rhs.m_deviceMemory;
1168 }
1169
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001170 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001171 {
1172 return m_deviceMemory;
1173 }
1174
1175 explicit operator bool() const
1176 {
1177 return m_deviceMemory != VK_NULL_HANDLE;
1178 }
1179
1180 bool operator!() const
1181 {
1182 return m_deviceMemory == VK_NULL_HANDLE;
1183 }
1184
1185 private:
1186 VkDeviceMemory m_deviceMemory;
1187 };
1188 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1189
1190 class CommandPool
1191 {
1192 public:
1193 CommandPool()
1194 : m_commandPool(VK_NULL_HANDLE)
1195 {}
1196
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001197 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001198 : m_commandPool(VK_NULL_HANDLE)
1199 {}
1200
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001201 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001202 : m_commandPool(commandPool)
1203 {}
1204
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001205#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001206 CommandPool& operator=(VkCommandPool commandPool)
1207 {
1208 m_commandPool = commandPool;
1209 return *this;
1210 }
1211#endif
1212
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001213 CommandPool& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001214 {
1215 m_commandPool = VK_NULL_HANDLE;
1216 return *this;
1217 }
1218
Lenny Komowebf33162016-08-26 14:10:08 -06001219 bool operator==(CommandPool const &rhs) const
1220 {
1221 return m_commandPool == rhs.m_commandPool;
1222 }
1223
1224 bool operator!=(CommandPool const &rhs) const
1225 {
1226 return m_commandPool != rhs.m_commandPool;
1227 }
1228
1229 bool operator<(CommandPool const &rhs) const
1230 {
1231 return m_commandPool < rhs.m_commandPool;
1232 }
1233
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001234 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001235 {
1236 return m_commandPool;
1237 }
1238
1239 explicit operator bool() const
1240 {
1241 return m_commandPool != VK_NULL_HANDLE;
1242 }
1243
1244 bool operator!() const
1245 {
1246 return m_commandPool == VK_NULL_HANDLE;
1247 }
1248
1249 private:
1250 VkCommandPool m_commandPool;
1251 };
1252 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1253
1254 class Buffer
1255 {
1256 public:
1257 Buffer()
1258 : m_buffer(VK_NULL_HANDLE)
1259 {}
1260
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001261 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001262 : m_buffer(VK_NULL_HANDLE)
1263 {}
1264
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001265 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001266 : m_buffer(buffer)
1267 {}
1268
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001269#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001270 Buffer& operator=(VkBuffer buffer)
1271 {
1272 m_buffer = buffer;
1273 return *this;
1274 }
1275#endif
1276
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001277 Buffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001278 {
1279 m_buffer = VK_NULL_HANDLE;
1280 return *this;
1281 }
1282
Lenny Komowebf33162016-08-26 14:10:08 -06001283 bool operator==(Buffer const &rhs) const
1284 {
1285 return m_buffer == rhs.m_buffer;
1286 }
1287
1288 bool operator!=(Buffer const &rhs) const
1289 {
1290 return m_buffer != rhs.m_buffer;
1291 }
1292
1293 bool operator<(Buffer const &rhs) const
1294 {
1295 return m_buffer < rhs.m_buffer;
1296 }
1297
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001298 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001299 {
1300 return m_buffer;
1301 }
1302
1303 explicit operator bool() const
1304 {
1305 return m_buffer != VK_NULL_HANDLE;
1306 }
1307
1308 bool operator!() const
1309 {
1310 return m_buffer == VK_NULL_HANDLE;
1311 }
1312
1313 private:
1314 VkBuffer m_buffer;
1315 };
1316 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1317
1318 class BufferView
1319 {
1320 public:
1321 BufferView()
1322 : m_bufferView(VK_NULL_HANDLE)
1323 {}
1324
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001325 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001326 : m_bufferView(VK_NULL_HANDLE)
1327 {}
1328
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001329 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001330 : m_bufferView(bufferView)
1331 {}
1332
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001333#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001334 BufferView& operator=(VkBufferView bufferView)
1335 {
1336 m_bufferView = bufferView;
1337 return *this;
1338 }
1339#endif
1340
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001341 BufferView& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001342 {
1343 m_bufferView = VK_NULL_HANDLE;
1344 return *this;
1345 }
1346
Lenny Komowebf33162016-08-26 14:10:08 -06001347 bool operator==(BufferView const &rhs) const
1348 {
1349 return m_bufferView == rhs.m_bufferView;
1350 }
1351
1352 bool operator!=(BufferView const &rhs) const
1353 {
1354 return m_bufferView != rhs.m_bufferView;
1355 }
1356
1357 bool operator<(BufferView const &rhs) const
1358 {
1359 return m_bufferView < rhs.m_bufferView;
1360 }
1361
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001362 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001363 {
1364 return m_bufferView;
1365 }
1366
1367 explicit operator bool() const
1368 {
1369 return m_bufferView != VK_NULL_HANDLE;
1370 }
1371
1372 bool operator!() const
1373 {
1374 return m_bufferView == VK_NULL_HANDLE;
1375 }
1376
1377 private:
1378 VkBufferView m_bufferView;
1379 };
1380 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1381
1382 class Image
1383 {
1384 public:
1385 Image()
1386 : m_image(VK_NULL_HANDLE)
1387 {}
1388
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001389 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001390 : m_image(VK_NULL_HANDLE)
1391 {}
1392
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001393 VULKAN_HPP_TYPESAFE_EXPLICIT Image(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001394 : m_image(image)
1395 {}
1396
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001397#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001398 Image& operator=(VkImage image)
1399 {
1400 m_image = image;
1401 return *this;
1402 }
1403#endif
1404
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001405 Image& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001406 {
1407 m_image = VK_NULL_HANDLE;
1408 return *this;
1409 }
1410
Lenny Komowebf33162016-08-26 14:10:08 -06001411 bool operator==(Image const &rhs) const
1412 {
1413 return m_image == rhs.m_image;
1414 }
1415
1416 bool operator!=(Image const &rhs) const
1417 {
1418 return m_image != rhs.m_image;
1419 }
1420
1421 bool operator<(Image const &rhs) const
1422 {
1423 return m_image < rhs.m_image;
1424 }
1425
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001426 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001427 {
1428 return m_image;
1429 }
1430
1431 explicit operator bool() const
1432 {
1433 return m_image != VK_NULL_HANDLE;
1434 }
1435
1436 bool operator!() const
1437 {
1438 return m_image == VK_NULL_HANDLE;
1439 }
1440
1441 private:
1442 VkImage m_image;
1443 };
1444 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1445
1446 class ImageView
1447 {
1448 public:
1449 ImageView()
1450 : m_imageView(VK_NULL_HANDLE)
1451 {}
1452
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001453 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001454 : m_imageView(VK_NULL_HANDLE)
1455 {}
1456
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001457 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001458 : m_imageView(imageView)
1459 {}
1460
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001461#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001462 ImageView& operator=(VkImageView imageView)
1463 {
1464 m_imageView = imageView;
1465 return *this;
1466 }
1467#endif
1468
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001469 ImageView& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001470 {
1471 m_imageView = VK_NULL_HANDLE;
1472 return *this;
1473 }
1474
Lenny Komowebf33162016-08-26 14:10:08 -06001475 bool operator==(ImageView const &rhs) const
1476 {
1477 return m_imageView == rhs.m_imageView;
1478 }
1479
1480 bool operator!=(ImageView const &rhs) const
1481 {
1482 return m_imageView != rhs.m_imageView;
1483 }
1484
1485 bool operator<(ImageView const &rhs) const
1486 {
1487 return m_imageView < rhs.m_imageView;
1488 }
1489
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001490 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001491 {
1492 return m_imageView;
1493 }
1494
1495 explicit operator bool() const
1496 {
1497 return m_imageView != VK_NULL_HANDLE;
1498 }
1499
1500 bool operator!() const
1501 {
1502 return m_imageView == VK_NULL_HANDLE;
1503 }
1504
1505 private:
1506 VkImageView m_imageView;
1507 };
1508 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1509
1510 class ShaderModule
1511 {
1512 public:
1513 ShaderModule()
1514 : m_shaderModule(VK_NULL_HANDLE)
1515 {}
1516
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001517 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001518 : m_shaderModule(VK_NULL_HANDLE)
1519 {}
1520
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001521 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001522 : m_shaderModule(shaderModule)
1523 {}
1524
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001525#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001526 ShaderModule& operator=(VkShaderModule shaderModule)
1527 {
1528 m_shaderModule = shaderModule;
1529 return *this;
1530 }
1531#endif
1532
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001533 ShaderModule& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001534 {
1535 m_shaderModule = VK_NULL_HANDLE;
1536 return *this;
1537 }
1538
Lenny Komowebf33162016-08-26 14:10:08 -06001539 bool operator==(ShaderModule const &rhs) const
1540 {
1541 return m_shaderModule == rhs.m_shaderModule;
1542 }
1543
1544 bool operator!=(ShaderModule const &rhs) const
1545 {
1546 return m_shaderModule != rhs.m_shaderModule;
1547 }
1548
1549 bool operator<(ShaderModule const &rhs) const
1550 {
1551 return m_shaderModule < rhs.m_shaderModule;
1552 }
1553
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001554 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001555 {
1556 return m_shaderModule;
1557 }
1558
1559 explicit operator bool() const
1560 {
1561 return m_shaderModule != VK_NULL_HANDLE;
1562 }
1563
1564 bool operator!() const
1565 {
1566 return m_shaderModule == VK_NULL_HANDLE;
1567 }
1568
1569 private:
1570 VkShaderModule m_shaderModule;
1571 };
1572 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1573
1574 class Pipeline
1575 {
1576 public:
1577 Pipeline()
1578 : m_pipeline(VK_NULL_HANDLE)
1579 {}
1580
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001581 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001582 : m_pipeline(VK_NULL_HANDLE)
1583 {}
1584
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001585 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001586 : m_pipeline(pipeline)
1587 {}
1588
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001589#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001590 Pipeline& operator=(VkPipeline pipeline)
1591 {
1592 m_pipeline = pipeline;
1593 return *this;
1594 }
1595#endif
1596
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001597 Pipeline& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001598 {
1599 m_pipeline = VK_NULL_HANDLE;
1600 return *this;
1601 }
1602
Lenny Komowebf33162016-08-26 14:10:08 -06001603 bool operator==(Pipeline const &rhs) const
1604 {
1605 return m_pipeline == rhs.m_pipeline;
1606 }
1607
1608 bool operator!=(Pipeline const &rhs) const
1609 {
1610 return m_pipeline != rhs.m_pipeline;
1611 }
1612
1613 bool operator<(Pipeline const &rhs) const
1614 {
1615 return m_pipeline < rhs.m_pipeline;
1616 }
1617
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001618 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001619 {
1620 return m_pipeline;
1621 }
1622
1623 explicit operator bool() const
1624 {
1625 return m_pipeline != VK_NULL_HANDLE;
1626 }
1627
1628 bool operator!() const
1629 {
1630 return m_pipeline == VK_NULL_HANDLE;
1631 }
1632
1633 private:
1634 VkPipeline m_pipeline;
1635 };
1636 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1637
1638 class PipelineLayout
1639 {
1640 public:
1641 PipelineLayout()
1642 : m_pipelineLayout(VK_NULL_HANDLE)
1643 {}
1644
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001645 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001646 : m_pipelineLayout(VK_NULL_HANDLE)
1647 {}
1648
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001649 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001650 : m_pipelineLayout(pipelineLayout)
1651 {}
1652
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001653#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001654 PipelineLayout& operator=(VkPipelineLayout pipelineLayout)
1655 {
1656 m_pipelineLayout = pipelineLayout;
1657 return *this;
1658 }
1659#endif
1660
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001661 PipelineLayout& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001662 {
1663 m_pipelineLayout = VK_NULL_HANDLE;
1664 return *this;
1665 }
1666
Lenny Komowebf33162016-08-26 14:10:08 -06001667 bool operator==(PipelineLayout const &rhs) const
1668 {
1669 return m_pipelineLayout == rhs.m_pipelineLayout;
1670 }
1671
1672 bool operator!=(PipelineLayout const &rhs) const
1673 {
1674 return m_pipelineLayout != rhs.m_pipelineLayout;
1675 }
1676
1677 bool operator<(PipelineLayout const &rhs) const
1678 {
1679 return m_pipelineLayout < rhs.m_pipelineLayout;
1680 }
1681
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001682 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001683 {
1684 return m_pipelineLayout;
1685 }
1686
1687 explicit operator bool() const
1688 {
1689 return m_pipelineLayout != VK_NULL_HANDLE;
1690 }
1691
1692 bool operator!() const
1693 {
1694 return m_pipelineLayout == VK_NULL_HANDLE;
1695 }
1696
1697 private:
1698 VkPipelineLayout m_pipelineLayout;
1699 };
1700 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1701
1702 class Sampler
1703 {
1704 public:
1705 Sampler()
1706 : m_sampler(VK_NULL_HANDLE)
1707 {}
1708
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001709 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001710 : m_sampler(VK_NULL_HANDLE)
1711 {}
1712
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001713 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001714 : m_sampler(sampler)
1715 {}
1716
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001717#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001718 Sampler& operator=(VkSampler sampler)
1719 {
1720 m_sampler = sampler;
1721 return *this;
1722 }
1723#endif
1724
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001725 Sampler& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001726 {
1727 m_sampler = VK_NULL_HANDLE;
1728 return *this;
1729 }
1730
Lenny Komowebf33162016-08-26 14:10:08 -06001731 bool operator==(Sampler const &rhs) const
1732 {
1733 return m_sampler == rhs.m_sampler;
1734 }
1735
1736 bool operator!=(Sampler const &rhs) const
1737 {
1738 return m_sampler != rhs.m_sampler;
1739 }
1740
1741 bool operator<(Sampler const &rhs) const
1742 {
1743 return m_sampler < rhs.m_sampler;
1744 }
1745
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001746 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001747 {
1748 return m_sampler;
1749 }
1750
1751 explicit operator bool() const
1752 {
1753 return m_sampler != VK_NULL_HANDLE;
1754 }
1755
1756 bool operator!() const
1757 {
1758 return m_sampler == VK_NULL_HANDLE;
1759 }
1760
1761 private:
1762 VkSampler m_sampler;
1763 };
1764 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1765
1766 class DescriptorSet
1767 {
1768 public:
1769 DescriptorSet()
1770 : m_descriptorSet(VK_NULL_HANDLE)
1771 {}
1772
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001773 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001774 : m_descriptorSet(VK_NULL_HANDLE)
1775 {}
1776
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001777 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001778 : m_descriptorSet(descriptorSet)
1779 {}
1780
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001781#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001782 DescriptorSet& operator=(VkDescriptorSet descriptorSet)
1783 {
1784 m_descriptorSet = descriptorSet;
1785 return *this;
1786 }
1787#endif
1788
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001789 DescriptorSet& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001790 {
1791 m_descriptorSet = VK_NULL_HANDLE;
1792 return *this;
1793 }
1794
Lenny Komowebf33162016-08-26 14:10:08 -06001795 bool operator==(DescriptorSet const &rhs) const
1796 {
1797 return m_descriptorSet == rhs.m_descriptorSet;
1798 }
1799
1800 bool operator!=(DescriptorSet const &rhs) const
1801 {
1802 return m_descriptorSet != rhs.m_descriptorSet;
1803 }
1804
1805 bool operator<(DescriptorSet const &rhs) const
1806 {
1807 return m_descriptorSet < rhs.m_descriptorSet;
1808 }
1809
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001810 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001811 {
1812 return m_descriptorSet;
1813 }
1814
1815 explicit operator bool() const
1816 {
1817 return m_descriptorSet != VK_NULL_HANDLE;
1818 }
1819
1820 bool operator!() const
1821 {
1822 return m_descriptorSet == VK_NULL_HANDLE;
1823 }
1824
1825 private:
1826 VkDescriptorSet m_descriptorSet;
1827 };
1828 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1829
1830 class DescriptorSetLayout
1831 {
1832 public:
1833 DescriptorSetLayout()
1834 : m_descriptorSetLayout(VK_NULL_HANDLE)
1835 {}
1836
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001837 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001838 : m_descriptorSetLayout(VK_NULL_HANDLE)
1839 {}
1840
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001841 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001842 : m_descriptorSetLayout(descriptorSetLayout)
1843 {}
1844
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001845#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001846 DescriptorSetLayout& operator=(VkDescriptorSetLayout descriptorSetLayout)
1847 {
1848 m_descriptorSetLayout = descriptorSetLayout;
1849 return *this;
1850 }
1851#endif
1852
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001853 DescriptorSetLayout& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001854 {
1855 m_descriptorSetLayout = VK_NULL_HANDLE;
1856 return *this;
1857 }
1858
Lenny Komowebf33162016-08-26 14:10:08 -06001859 bool operator==(DescriptorSetLayout const &rhs) const
1860 {
1861 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
1862 }
1863
1864 bool operator!=(DescriptorSetLayout const &rhs) const
1865 {
1866 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
1867 }
1868
1869 bool operator<(DescriptorSetLayout const &rhs) const
1870 {
1871 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
1872 }
1873
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001874 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001875 {
1876 return m_descriptorSetLayout;
1877 }
1878
1879 explicit operator bool() const
1880 {
1881 return m_descriptorSetLayout != VK_NULL_HANDLE;
1882 }
1883
1884 bool operator!() const
1885 {
1886 return m_descriptorSetLayout == VK_NULL_HANDLE;
1887 }
1888
1889 private:
1890 VkDescriptorSetLayout m_descriptorSetLayout;
1891 };
1892 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
1893
1894 class DescriptorPool
1895 {
1896 public:
1897 DescriptorPool()
1898 : m_descriptorPool(VK_NULL_HANDLE)
1899 {}
1900
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001901 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001902 : m_descriptorPool(VK_NULL_HANDLE)
1903 {}
1904
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001905 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001906 : m_descriptorPool(descriptorPool)
1907 {}
1908
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001909#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001910 DescriptorPool& operator=(VkDescriptorPool descriptorPool)
1911 {
1912 m_descriptorPool = descriptorPool;
1913 return *this;
1914 }
1915#endif
1916
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001917 DescriptorPool& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001918 {
1919 m_descriptorPool = VK_NULL_HANDLE;
1920 return *this;
1921 }
1922
Lenny Komowebf33162016-08-26 14:10:08 -06001923 bool operator==(DescriptorPool const &rhs) const
1924 {
1925 return m_descriptorPool == rhs.m_descriptorPool;
1926 }
1927
1928 bool operator!=(DescriptorPool const &rhs) const
1929 {
1930 return m_descriptorPool != rhs.m_descriptorPool;
1931 }
1932
1933 bool operator<(DescriptorPool const &rhs) const
1934 {
1935 return m_descriptorPool < rhs.m_descriptorPool;
1936 }
1937
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001938 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001939 {
1940 return m_descriptorPool;
1941 }
1942
1943 explicit operator bool() const
1944 {
1945 return m_descriptorPool != VK_NULL_HANDLE;
1946 }
1947
1948 bool operator!() const
1949 {
1950 return m_descriptorPool == VK_NULL_HANDLE;
1951 }
1952
1953 private:
1954 VkDescriptorPool m_descriptorPool;
1955 };
1956 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
1957
1958 class Fence
1959 {
1960 public:
1961 Fence()
1962 : m_fence(VK_NULL_HANDLE)
1963 {}
1964
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001965 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001966 : m_fence(VK_NULL_HANDLE)
1967 {}
1968
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001969 VULKAN_HPP_TYPESAFE_EXPLICIT Fence(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001970 : m_fence(fence)
1971 {}
1972
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001973#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001974 Fence& operator=(VkFence fence)
1975 {
1976 m_fence = fence;
1977 return *this;
1978 }
1979#endif
1980
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001981 Fence& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001982 {
1983 m_fence = VK_NULL_HANDLE;
1984 return *this;
1985 }
1986
Lenny Komowebf33162016-08-26 14:10:08 -06001987 bool operator==(Fence const &rhs) const
1988 {
1989 return m_fence == rhs.m_fence;
1990 }
1991
1992 bool operator!=(Fence const &rhs) const
1993 {
1994 return m_fence != rhs.m_fence;
1995 }
1996
1997 bool operator<(Fence const &rhs) const
1998 {
1999 return m_fence < rhs.m_fence;
2000 }
2001
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002002 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002003 {
2004 return m_fence;
2005 }
2006
2007 explicit operator bool() const
2008 {
2009 return m_fence != VK_NULL_HANDLE;
2010 }
2011
2012 bool operator!() const
2013 {
2014 return m_fence == VK_NULL_HANDLE;
2015 }
2016
2017 private:
2018 VkFence m_fence;
2019 };
2020 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2021
2022 class Semaphore
2023 {
2024 public:
2025 Semaphore()
2026 : m_semaphore(VK_NULL_HANDLE)
2027 {}
2028
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002029 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002030 : m_semaphore(VK_NULL_HANDLE)
2031 {}
2032
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002033 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002034 : m_semaphore(semaphore)
2035 {}
2036
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002037#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002038 Semaphore& operator=(VkSemaphore semaphore)
2039 {
2040 m_semaphore = semaphore;
2041 return *this;
2042 }
2043#endif
2044
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002045 Semaphore& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002046 {
2047 m_semaphore = VK_NULL_HANDLE;
2048 return *this;
2049 }
2050
Lenny Komowebf33162016-08-26 14:10:08 -06002051 bool operator==(Semaphore const &rhs) const
2052 {
2053 return m_semaphore == rhs.m_semaphore;
2054 }
2055
2056 bool operator!=(Semaphore const &rhs) const
2057 {
2058 return m_semaphore != rhs.m_semaphore;
2059 }
2060
2061 bool operator<(Semaphore const &rhs) const
2062 {
2063 return m_semaphore < rhs.m_semaphore;
2064 }
2065
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002066 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002067 {
2068 return m_semaphore;
2069 }
2070
2071 explicit operator bool() const
2072 {
2073 return m_semaphore != VK_NULL_HANDLE;
2074 }
2075
2076 bool operator!() const
2077 {
2078 return m_semaphore == VK_NULL_HANDLE;
2079 }
2080
2081 private:
2082 VkSemaphore m_semaphore;
2083 };
2084 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2085
2086 class Event
2087 {
2088 public:
2089 Event()
2090 : m_event(VK_NULL_HANDLE)
2091 {}
2092
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002093 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002094 : m_event(VK_NULL_HANDLE)
2095 {}
2096
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002097 VULKAN_HPP_TYPESAFE_EXPLICIT Event(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002098 : m_event(event)
2099 {}
2100
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002101#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002102 Event& operator=(VkEvent event)
2103 {
2104 m_event = event;
2105 return *this;
2106 }
2107#endif
2108
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002109 Event& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002110 {
2111 m_event = VK_NULL_HANDLE;
2112 return *this;
2113 }
2114
Lenny Komowebf33162016-08-26 14:10:08 -06002115 bool operator==(Event const &rhs) const
2116 {
2117 return m_event == rhs.m_event;
2118 }
2119
2120 bool operator!=(Event const &rhs) const
2121 {
2122 return m_event != rhs.m_event;
2123 }
2124
2125 bool operator<(Event const &rhs) const
2126 {
2127 return m_event < rhs.m_event;
2128 }
2129
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002130 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002131 {
2132 return m_event;
2133 }
2134
2135 explicit operator bool() const
2136 {
2137 return m_event != VK_NULL_HANDLE;
2138 }
2139
2140 bool operator!() const
2141 {
2142 return m_event == VK_NULL_HANDLE;
2143 }
2144
2145 private:
2146 VkEvent m_event;
2147 };
2148 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2149
2150 class QueryPool
2151 {
2152 public:
2153 QueryPool()
2154 : m_queryPool(VK_NULL_HANDLE)
2155 {}
2156
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002157 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002158 : m_queryPool(VK_NULL_HANDLE)
2159 {}
2160
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002161 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002162 : m_queryPool(queryPool)
2163 {}
2164
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002165#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002166 QueryPool& operator=(VkQueryPool queryPool)
2167 {
2168 m_queryPool = queryPool;
2169 return *this;
2170 }
2171#endif
2172
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002173 QueryPool& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002174 {
2175 m_queryPool = VK_NULL_HANDLE;
2176 return *this;
2177 }
2178
Lenny Komowebf33162016-08-26 14:10:08 -06002179 bool operator==(QueryPool const &rhs) const
2180 {
2181 return m_queryPool == rhs.m_queryPool;
2182 }
2183
2184 bool operator!=(QueryPool const &rhs) const
2185 {
2186 return m_queryPool != rhs.m_queryPool;
2187 }
2188
2189 bool operator<(QueryPool const &rhs) const
2190 {
2191 return m_queryPool < rhs.m_queryPool;
2192 }
2193
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002194 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002195 {
2196 return m_queryPool;
2197 }
2198
2199 explicit operator bool() const
2200 {
2201 return m_queryPool != VK_NULL_HANDLE;
2202 }
2203
2204 bool operator!() const
2205 {
2206 return m_queryPool == VK_NULL_HANDLE;
2207 }
2208
2209 private:
2210 VkQueryPool m_queryPool;
2211 };
2212 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2213
2214 class Framebuffer
2215 {
2216 public:
2217 Framebuffer()
2218 : m_framebuffer(VK_NULL_HANDLE)
2219 {}
2220
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002221 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002222 : m_framebuffer(VK_NULL_HANDLE)
2223 {}
2224
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002225 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002226 : m_framebuffer(framebuffer)
2227 {}
2228
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002229#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002230 Framebuffer& operator=(VkFramebuffer framebuffer)
2231 {
2232 m_framebuffer = framebuffer;
2233 return *this;
2234 }
2235#endif
2236
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002237 Framebuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002238 {
2239 m_framebuffer = VK_NULL_HANDLE;
2240 return *this;
2241 }
2242
Lenny Komowebf33162016-08-26 14:10:08 -06002243 bool operator==(Framebuffer const &rhs) const
2244 {
2245 return m_framebuffer == rhs.m_framebuffer;
2246 }
2247
2248 bool operator!=(Framebuffer const &rhs) const
2249 {
2250 return m_framebuffer != rhs.m_framebuffer;
2251 }
2252
2253 bool operator<(Framebuffer const &rhs) const
2254 {
2255 return m_framebuffer < rhs.m_framebuffer;
2256 }
2257
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002258 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002259 {
2260 return m_framebuffer;
2261 }
2262
2263 explicit operator bool() const
2264 {
2265 return m_framebuffer != VK_NULL_HANDLE;
2266 }
2267
2268 bool operator!() const
2269 {
2270 return m_framebuffer == VK_NULL_HANDLE;
2271 }
2272
2273 private:
2274 VkFramebuffer m_framebuffer;
2275 };
2276 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2277
2278 class RenderPass
2279 {
2280 public:
2281 RenderPass()
2282 : m_renderPass(VK_NULL_HANDLE)
2283 {}
2284
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002285 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002286 : m_renderPass(VK_NULL_HANDLE)
2287 {}
2288
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002289 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002290 : m_renderPass(renderPass)
2291 {}
2292
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002293#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002294 RenderPass& operator=(VkRenderPass renderPass)
2295 {
2296 m_renderPass = renderPass;
2297 return *this;
2298 }
2299#endif
2300
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002301 RenderPass& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002302 {
2303 m_renderPass = VK_NULL_HANDLE;
2304 return *this;
2305 }
2306
Lenny Komowebf33162016-08-26 14:10:08 -06002307 bool operator==(RenderPass const &rhs) const
2308 {
2309 return m_renderPass == rhs.m_renderPass;
2310 }
2311
2312 bool operator!=(RenderPass const &rhs) const
2313 {
2314 return m_renderPass != rhs.m_renderPass;
2315 }
2316
2317 bool operator<(RenderPass const &rhs) const
2318 {
2319 return m_renderPass < rhs.m_renderPass;
2320 }
2321
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002322 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002323 {
2324 return m_renderPass;
2325 }
2326
2327 explicit operator bool() const
2328 {
2329 return m_renderPass != VK_NULL_HANDLE;
2330 }
2331
2332 bool operator!() const
2333 {
2334 return m_renderPass == VK_NULL_HANDLE;
2335 }
2336
2337 private:
2338 VkRenderPass m_renderPass;
2339 };
2340 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2341
2342 class PipelineCache
2343 {
2344 public:
2345 PipelineCache()
2346 : m_pipelineCache(VK_NULL_HANDLE)
2347 {}
2348
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002349 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002350 : m_pipelineCache(VK_NULL_HANDLE)
2351 {}
2352
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002353 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002354 : m_pipelineCache(pipelineCache)
2355 {}
2356
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002357#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002358 PipelineCache& operator=(VkPipelineCache pipelineCache)
2359 {
2360 m_pipelineCache = pipelineCache;
2361 return *this;
2362 }
2363#endif
2364
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002365 PipelineCache& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002366 {
2367 m_pipelineCache = VK_NULL_HANDLE;
2368 return *this;
2369 }
2370
Lenny Komowebf33162016-08-26 14:10:08 -06002371 bool operator==(PipelineCache const &rhs) const
2372 {
2373 return m_pipelineCache == rhs.m_pipelineCache;
2374 }
2375
2376 bool operator!=(PipelineCache const &rhs) const
2377 {
2378 return m_pipelineCache != rhs.m_pipelineCache;
2379 }
2380
2381 bool operator<(PipelineCache const &rhs) const
2382 {
2383 return m_pipelineCache < rhs.m_pipelineCache;
2384 }
2385
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002386 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002387 {
2388 return m_pipelineCache;
2389 }
2390
2391 explicit operator bool() const
2392 {
2393 return m_pipelineCache != VK_NULL_HANDLE;
2394 }
2395
2396 bool operator!() const
2397 {
2398 return m_pipelineCache == VK_NULL_HANDLE;
2399 }
2400
2401 private:
2402 VkPipelineCache m_pipelineCache;
2403 };
2404 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2405
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002406 class ObjectTableNVX
2407 {
2408 public:
2409 ObjectTableNVX()
2410 : m_objectTableNVX(VK_NULL_HANDLE)
2411 {}
2412
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002413 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002414 : m_objectTableNVX(VK_NULL_HANDLE)
2415 {}
2416
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002417 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002418 : m_objectTableNVX(objectTableNVX)
2419 {}
2420
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002421#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002422 ObjectTableNVX& operator=(VkObjectTableNVX objectTableNVX)
2423 {
2424 m_objectTableNVX = objectTableNVX;
2425 return *this;
2426 }
2427#endif
2428
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002429 ObjectTableNVX& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002430 {
2431 m_objectTableNVX = VK_NULL_HANDLE;
2432 return *this;
2433 }
2434
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002435 bool operator==(ObjectTableNVX const &rhs) const
2436 {
2437 return m_objectTableNVX == rhs.m_objectTableNVX;
2438 }
2439
2440 bool operator!=(ObjectTableNVX const &rhs) const
2441 {
2442 return m_objectTableNVX != rhs.m_objectTableNVX;
2443 }
2444
2445 bool operator<(ObjectTableNVX const &rhs) const
2446 {
2447 return m_objectTableNVX < rhs.m_objectTableNVX;
2448 }
2449
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002450 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002451 {
2452 return m_objectTableNVX;
2453 }
2454
2455 explicit operator bool() const
2456 {
2457 return m_objectTableNVX != VK_NULL_HANDLE;
2458 }
2459
2460 bool operator!() const
2461 {
2462 return m_objectTableNVX == VK_NULL_HANDLE;
2463 }
2464
2465 private:
2466 VkObjectTableNVX m_objectTableNVX;
2467 };
2468 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2469
2470 class IndirectCommandsLayoutNVX
2471 {
2472 public:
2473 IndirectCommandsLayoutNVX()
2474 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2475 {}
2476
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002477 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002478 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2479 {}
2480
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002481 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002482 : m_indirectCommandsLayoutNVX(indirectCommandsLayoutNVX)
2483 {}
2484
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002485#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002486 IndirectCommandsLayoutNVX& operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
2487 {
2488 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
2489 return *this;
2490 }
2491#endif
2492
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002493 IndirectCommandsLayoutNVX& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002494 {
2495 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2496 return *this;
2497 }
2498
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002499 bool operator==(IndirectCommandsLayoutNVX const &rhs) const
2500 {
2501 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2502 }
2503
2504 bool operator!=(IndirectCommandsLayoutNVX const &rhs) const
2505 {
2506 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2507 }
2508
2509 bool operator<(IndirectCommandsLayoutNVX const &rhs) const
2510 {
2511 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2512 }
2513
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002514 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002515 {
2516 return m_indirectCommandsLayoutNVX;
2517 }
2518
2519 explicit operator bool() const
2520 {
2521 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2522 }
2523
2524 bool operator!() const
2525 {
2526 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2527 }
2528
2529 private:
2530 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2531 };
2532 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2533
Mark Young0f183a82017-02-28 09:58:04 -07002534 class DescriptorUpdateTemplateKHR
2535 {
2536 public:
2537 DescriptorUpdateTemplateKHR()
2538 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2539 {}
2540
2541 DescriptorUpdateTemplateKHR( std::nullptr_t )
2542 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2543 {}
2544
2545 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
2546 : m_descriptorUpdateTemplateKHR(descriptorUpdateTemplateKHR)
2547 {}
2548
2549#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2550 DescriptorUpdateTemplateKHR& operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
2551 {
2552 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
2553 return *this;
2554 }
2555#endif
2556
2557 DescriptorUpdateTemplateKHR& operator=( std::nullptr_t )
2558 {
2559 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2560 return *this;
2561 }
2562
2563 bool operator==(DescriptorUpdateTemplateKHR const &rhs) const
2564 {
2565 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2566 }
2567
2568 bool operator!=(DescriptorUpdateTemplateKHR const &rhs) const
2569 {
2570 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2571 }
2572
2573 bool operator<(DescriptorUpdateTemplateKHR const &rhs) const
2574 {
2575 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2576 }
2577
2578 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2579 {
2580 return m_descriptorUpdateTemplateKHR;
2581 }
2582
2583 explicit operator bool() const
2584 {
2585 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2586 }
2587
2588 bool operator!() const
2589 {
2590 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2591 }
2592
2593 private:
2594 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2595 };
2596 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2597
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002598 class DisplayKHR
2599 {
2600 public:
2601 DisplayKHR()
2602 : m_displayKHR(VK_NULL_HANDLE)
2603 {}
2604
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002605 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002606 : m_displayKHR(VK_NULL_HANDLE)
2607 {}
2608
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002609 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002610 : m_displayKHR(displayKHR)
2611 {}
2612
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002613#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002614 DisplayKHR& operator=(VkDisplayKHR displayKHR)
2615 {
2616 m_displayKHR = displayKHR;
2617 return *this;
2618 }
2619#endif
2620
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002621 DisplayKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002622 {
2623 m_displayKHR = VK_NULL_HANDLE;
2624 return *this;
2625 }
2626
Lenny Komowebf33162016-08-26 14:10:08 -06002627 bool operator==(DisplayKHR const &rhs) const
2628 {
2629 return m_displayKHR == rhs.m_displayKHR;
2630 }
2631
2632 bool operator!=(DisplayKHR const &rhs) const
2633 {
2634 return m_displayKHR != rhs.m_displayKHR;
2635 }
2636
2637 bool operator<(DisplayKHR const &rhs) const
2638 {
2639 return m_displayKHR < rhs.m_displayKHR;
2640 }
2641
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002642 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002643 {
2644 return m_displayKHR;
2645 }
2646
2647 explicit operator bool() const
2648 {
2649 return m_displayKHR != VK_NULL_HANDLE;
2650 }
2651
2652 bool operator!() const
2653 {
2654 return m_displayKHR == VK_NULL_HANDLE;
2655 }
2656
2657 private:
2658 VkDisplayKHR m_displayKHR;
2659 };
2660 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2661
2662 class DisplayModeKHR
2663 {
2664 public:
2665 DisplayModeKHR()
2666 : m_displayModeKHR(VK_NULL_HANDLE)
2667 {}
2668
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002669 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002670 : m_displayModeKHR(VK_NULL_HANDLE)
2671 {}
2672
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002673 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002674 : m_displayModeKHR(displayModeKHR)
2675 {}
2676
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002677#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002678 DisplayModeKHR& operator=(VkDisplayModeKHR displayModeKHR)
2679 {
2680 m_displayModeKHR = displayModeKHR;
2681 return *this;
2682 }
2683#endif
2684
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002685 DisplayModeKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002686 {
2687 m_displayModeKHR = VK_NULL_HANDLE;
2688 return *this;
2689 }
2690
Lenny Komowebf33162016-08-26 14:10:08 -06002691 bool operator==(DisplayModeKHR const &rhs) const
2692 {
2693 return m_displayModeKHR == rhs.m_displayModeKHR;
2694 }
2695
2696 bool operator!=(DisplayModeKHR const &rhs) const
2697 {
2698 return m_displayModeKHR != rhs.m_displayModeKHR;
2699 }
2700
2701 bool operator<(DisplayModeKHR const &rhs) const
2702 {
2703 return m_displayModeKHR < rhs.m_displayModeKHR;
2704 }
2705
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002706 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002707 {
2708 return m_displayModeKHR;
2709 }
2710
2711 explicit operator bool() const
2712 {
2713 return m_displayModeKHR != VK_NULL_HANDLE;
2714 }
2715
2716 bool operator!() const
2717 {
2718 return m_displayModeKHR == VK_NULL_HANDLE;
2719 }
2720
2721 private:
2722 VkDisplayModeKHR m_displayModeKHR;
2723 };
2724 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
2725
2726 class SurfaceKHR
2727 {
2728 public:
2729 SurfaceKHR()
2730 : m_surfaceKHR(VK_NULL_HANDLE)
2731 {}
2732
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002733 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002734 : m_surfaceKHR(VK_NULL_HANDLE)
2735 {}
2736
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002737 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002738 : m_surfaceKHR(surfaceKHR)
2739 {}
2740
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002741#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002742 SurfaceKHR& operator=(VkSurfaceKHR surfaceKHR)
2743 {
2744 m_surfaceKHR = surfaceKHR;
2745 return *this;
2746 }
2747#endif
2748
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002749 SurfaceKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002750 {
2751 m_surfaceKHR = VK_NULL_HANDLE;
2752 return *this;
2753 }
2754
Lenny Komowebf33162016-08-26 14:10:08 -06002755 bool operator==(SurfaceKHR const &rhs) const
2756 {
2757 return m_surfaceKHR == rhs.m_surfaceKHR;
2758 }
2759
2760 bool operator!=(SurfaceKHR const &rhs) const
2761 {
2762 return m_surfaceKHR != rhs.m_surfaceKHR;
2763 }
2764
2765 bool operator<(SurfaceKHR const &rhs) const
2766 {
2767 return m_surfaceKHR < rhs.m_surfaceKHR;
2768 }
2769
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002770 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002771 {
2772 return m_surfaceKHR;
2773 }
2774
2775 explicit operator bool() const
2776 {
2777 return m_surfaceKHR != VK_NULL_HANDLE;
2778 }
2779
2780 bool operator!() const
2781 {
2782 return m_surfaceKHR == VK_NULL_HANDLE;
2783 }
2784
2785 private:
2786 VkSurfaceKHR m_surfaceKHR;
2787 };
2788 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
2789
2790 class SwapchainKHR
2791 {
2792 public:
2793 SwapchainKHR()
2794 : m_swapchainKHR(VK_NULL_HANDLE)
2795 {}
2796
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002797 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002798 : m_swapchainKHR(VK_NULL_HANDLE)
2799 {}
2800
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002801 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002802 : m_swapchainKHR(swapchainKHR)
2803 {}
2804
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002805#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002806 SwapchainKHR& operator=(VkSwapchainKHR swapchainKHR)
2807 {
2808 m_swapchainKHR = swapchainKHR;
2809 return *this;
2810 }
2811#endif
2812
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002813 SwapchainKHR& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002814 {
2815 m_swapchainKHR = VK_NULL_HANDLE;
2816 return *this;
2817 }
2818
Lenny Komowebf33162016-08-26 14:10:08 -06002819 bool operator==(SwapchainKHR const &rhs) const
2820 {
2821 return m_swapchainKHR == rhs.m_swapchainKHR;
2822 }
2823
2824 bool operator!=(SwapchainKHR const &rhs) const
2825 {
2826 return m_swapchainKHR != rhs.m_swapchainKHR;
2827 }
2828
2829 bool operator<(SwapchainKHR const &rhs) const
2830 {
2831 return m_swapchainKHR < rhs.m_swapchainKHR;
2832 }
2833
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002834 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002835 {
2836 return m_swapchainKHR;
2837 }
2838
2839 explicit operator bool() const
2840 {
2841 return m_swapchainKHR != VK_NULL_HANDLE;
2842 }
2843
2844 bool operator!() const
2845 {
2846 return m_swapchainKHR == VK_NULL_HANDLE;
2847 }
2848
2849 private:
2850 VkSwapchainKHR m_swapchainKHR;
2851 };
2852 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
2853
2854 class DebugReportCallbackEXT
2855 {
2856 public:
2857 DebugReportCallbackEXT()
2858 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2859 {}
2860
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002861 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002862 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
2863 {}
2864
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002865 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002866 : m_debugReportCallbackEXT(debugReportCallbackEXT)
2867 {}
2868
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002869#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002870 DebugReportCallbackEXT& operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
2871 {
2872 m_debugReportCallbackEXT = debugReportCallbackEXT;
2873 return *this;
2874 }
2875#endif
2876
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002877 DebugReportCallbackEXT& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002878 {
2879 m_debugReportCallbackEXT = VK_NULL_HANDLE;
2880 return *this;
2881 }
2882
Lenny Komowebf33162016-08-26 14:10:08 -06002883 bool operator==(DebugReportCallbackEXT const &rhs) const
2884 {
2885 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
2886 }
2887
2888 bool operator!=(DebugReportCallbackEXT const &rhs) const
2889 {
2890 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
2891 }
2892
2893 bool operator<(DebugReportCallbackEXT const &rhs) const
2894 {
2895 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
2896 }
2897
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002898 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002899 {
2900 return m_debugReportCallbackEXT;
2901 }
2902
2903 explicit operator bool() const
2904 {
2905 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
2906 }
2907
2908 bool operator!() const
2909 {
2910 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
2911 }
2912
2913 private:
2914 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
2915 };
2916 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
2917
2918 struct Offset2D
2919 {
2920 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
2921 : x( x_ )
2922 , y( y_ )
2923 {
2924 }
2925
2926 Offset2D( VkOffset2D const & rhs )
2927 {
2928 memcpy( this, &rhs, sizeof(Offset2D) );
2929 }
2930
2931 Offset2D& operator=( VkOffset2D const & rhs )
2932 {
2933 memcpy( this, &rhs, sizeof(Offset2D) );
2934 return *this;
2935 }
2936
2937 Offset2D& setX( int32_t x_ )
2938 {
2939 x = x_;
2940 return *this;
2941 }
2942
2943 Offset2D& setY( int32_t y_ )
2944 {
2945 y = y_;
2946 return *this;
2947 }
2948
2949 operator const VkOffset2D&() const
2950 {
2951 return *reinterpret_cast<const VkOffset2D*>(this);
2952 }
2953
2954 bool operator==( Offset2D const& rhs ) const
2955 {
2956 return ( x == rhs.x )
2957 && ( y == rhs.y );
2958 }
2959
2960 bool operator!=( Offset2D const& rhs ) const
2961 {
2962 return !operator==( rhs );
2963 }
2964
2965 int32_t x;
2966 int32_t y;
2967 };
2968 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
2969
2970 struct Offset3D
2971 {
2972 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
2973 : x( x_ )
2974 , y( y_ )
2975 , z( z_ )
2976 {
2977 }
2978
2979 Offset3D( VkOffset3D const & rhs )
2980 {
2981 memcpy( this, &rhs, sizeof(Offset3D) );
2982 }
2983
2984 Offset3D& operator=( VkOffset3D const & rhs )
2985 {
2986 memcpy( this, &rhs, sizeof(Offset3D) );
2987 return *this;
2988 }
2989
2990 Offset3D& setX( int32_t x_ )
2991 {
2992 x = x_;
2993 return *this;
2994 }
2995
2996 Offset3D& setY( int32_t y_ )
2997 {
2998 y = y_;
2999 return *this;
3000 }
3001
3002 Offset3D& setZ( int32_t z_ )
3003 {
3004 z = z_;
3005 return *this;
3006 }
3007
3008 operator const VkOffset3D&() const
3009 {
3010 return *reinterpret_cast<const VkOffset3D*>(this);
3011 }
3012
3013 bool operator==( Offset3D const& rhs ) const
3014 {
3015 return ( x == rhs.x )
3016 && ( y == rhs.y )
3017 && ( z == rhs.z );
3018 }
3019
3020 bool operator!=( Offset3D const& rhs ) const
3021 {
3022 return !operator==( rhs );
3023 }
3024
3025 int32_t x;
3026 int32_t y;
3027 int32_t z;
3028 };
3029 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3030
3031 struct Extent2D
3032 {
3033 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3034 : width( width_ )
3035 , height( height_ )
3036 {
3037 }
3038
3039 Extent2D( VkExtent2D const & rhs )
3040 {
3041 memcpy( this, &rhs, sizeof(Extent2D) );
3042 }
3043
3044 Extent2D& operator=( VkExtent2D const & rhs )
3045 {
3046 memcpy( this, &rhs, sizeof(Extent2D) );
3047 return *this;
3048 }
3049
3050 Extent2D& setWidth( uint32_t width_ )
3051 {
3052 width = width_;
3053 return *this;
3054 }
3055
3056 Extent2D& setHeight( uint32_t height_ )
3057 {
3058 height = height_;
3059 return *this;
3060 }
3061
3062 operator const VkExtent2D&() const
3063 {
3064 return *reinterpret_cast<const VkExtent2D*>(this);
3065 }
3066
3067 bool operator==( Extent2D const& rhs ) const
3068 {
3069 return ( width == rhs.width )
3070 && ( height == rhs.height );
3071 }
3072
3073 bool operator!=( Extent2D const& rhs ) const
3074 {
3075 return !operator==( rhs );
3076 }
3077
3078 uint32_t width;
3079 uint32_t height;
3080 };
3081 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3082
3083 struct Extent3D
3084 {
3085 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3086 : width( width_ )
3087 , height( height_ )
3088 , depth( depth_ )
3089 {
3090 }
3091
3092 Extent3D( VkExtent3D const & rhs )
3093 {
3094 memcpy( this, &rhs, sizeof(Extent3D) );
3095 }
3096
3097 Extent3D& operator=( VkExtent3D const & rhs )
3098 {
3099 memcpy( this, &rhs, sizeof(Extent3D) );
3100 return *this;
3101 }
3102
3103 Extent3D& setWidth( uint32_t width_ )
3104 {
3105 width = width_;
3106 return *this;
3107 }
3108
3109 Extent3D& setHeight( uint32_t height_ )
3110 {
3111 height = height_;
3112 return *this;
3113 }
3114
3115 Extent3D& setDepth( uint32_t depth_ )
3116 {
3117 depth = depth_;
3118 return *this;
3119 }
3120
3121 operator const VkExtent3D&() const
3122 {
3123 return *reinterpret_cast<const VkExtent3D*>(this);
3124 }
3125
3126 bool operator==( Extent3D const& rhs ) const
3127 {
3128 return ( width == rhs.width )
3129 && ( height == rhs.height )
3130 && ( depth == rhs.depth );
3131 }
3132
3133 bool operator!=( Extent3D const& rhs ) const
3134 {
3135 return !operator==( rhs );
3136 }
3137
3138 uint32_t width;
3139 uint32_t height;
3140 uint32_t depth;
3141 };
3142 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3143
3144 struct Viewport
3145 {
3146 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3147 : x( x_ )
3148 , y( y_ )
3149 , width( width_ )
3150 , height( height_ )
3151 , minDepth( minDepth_ )
3152 , maxDepth( maxDepth_ )
3153 {
3154 }
3155
3156 Viewport( VkViewport const & rhs )
3157 {
3158 memcpy( this, &rhs, sizeof(Viewport) );
3159 }
3160
3161 Viewport& operator=( VkViewport const & rhs )
3162 {
3163 memcpy( this, &rhs, sizeof(Viewport) );
3164 return *this;
3165 }
3166
3167 Viewport& setX( float x_ )
3168 {
3169 x = x_;
3170 return *this;
3171 }
3172
3173 Viewport& setY( float y_ )
3174 {
3175 y = y_;
3176 return *this;
3177 }
3178
3179 Viewport& setWidth( float width_ )
3180 {
3181 width = width_;
3182 return *this;
3183 }
3184
3185 Viewport& setHeight( float height_ )
3186 {
3187 height = height_;
3188 return *this;
3189 }
3190
3191 Viewport& setMinDepth( float minDepth_ )
3192 {
3193 minDepth = minDepth_;
3194 return *this;
3195 }
3196
3197 Viewport& setMaxDepth( float maxDepth_ )
3198 {
3199 maxDepth = maxDepth_;
3200 return *this;
3201 }
3202
3203 operator const VkViewport&() const
3204 {
3205 return *reinterpret_cast<const VkViewport*>(this);
3206 }
3207
3208 bool operator==( Viewport const& rhs ) const
3209 {
3210 return ( x == rhs.x )
3211 && ( y == rhs.y )
3212 && ( width == rhs.width )
3213 && ( height == rhs.height )
3214 && ( minDepth == rhs.minDepth )
3215 && ( maxDepth == rhs.maxDepth );
3216 }
3217
3218 bool operator!=( Viewport const& rhs ) const
3219 {
3220 return !operator==( rhs );
3221 }
3222
3223 float x;
3224 float y;
3225 float width;
3226 float height;
3227 float minDepth;
3228 float maxDepth;
3229 };
3230 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3231
3232 struct Rect2D
3233 {
3234 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3235 : offset( offset_ )
3236 , extent( extent_ )
3237 {
3238 }
3239
3240 Rect2D( VkRect2D const & rhs )
3241 {
3242 memcpy( this, &rhs, sizeof(Rect2D) );
3243 }
3244
3245 Rect2D& operator=( VkRect2D const & rhs )
3246 {
3247 memcpy( this, &rhs, sizeof(Rect2D) );
3248 return *this;
3249 }
3250
3251 Rect2D& setOffset( Offset2D offset_ )
3252 {
3253 offset = offset_;
3254 return *this;
3255 }
3256
3257 Rect2D& setExtent( Extent2D extent_ )
3258 {
3259 extent = extent_;
3260 return *this;
3261 }
3262
3263 operator const VkRect2D&() const
3264 {
3265 return *reinterpret_cast<const VkRect2D*>(this);
3266 }
3267
3268 bool operator==( Rect2D const& rhs ) const
3269 {
3270 return ( offset == rhs.offset )
3271 && ( extent == rhs.extent );
3272 }
3273
3274 bool operator!=( Rect2D const& rhs ) const
3275 {
3276 return !operator==( rhs );
3277 }
3278
3279 Offset2D offset;
3280 Extent2D extent;
3281 };
3282 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3283
3284 struct ClearRect
3285 {
3286 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3287 : rect( rect_ )
3288 , baseArrayLayer( baseArrayLayer_ )
3289 , layerCount( layerCount_ )
3290 {
3291 }
3292
3293 ClearRect( VkClearRect const & rhs )
3294 {
3295 memcpy( this, &rhs, sizeof(ClearRect) );
3296 }
3297
3298 ClearRect& operator=( VkClearRect const & rhs )
3299 {
3300 memcpy( this, &rhs, sizeof(ClearRect) );
3301 return *this;
3302 }
3303
3304 ClearRect& setRect( Rect2D rect_ )
3305 {
3306 rect = rect_;
3307 return *this;
3308 }
3309
3310 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3311 {
3312 baseArrayLayer = baseArrayLayer_;
3313 return *this;
3314 }
3315
3316 ClearRect& setLayerCount( uint32_t layerCount_ )
3317 {
3318 layerCount = layerCount_;
3319 return *this;
3320 }
3321
3322 operator const VkClearRect&() const
3323 {
3324 return *reinterpret_cast<const VkClearRect*>(this);
3325 }
3326
3327 bool operator==( ClearRect const& rhs ) const
3328 {
3329 return ( rect == rhs.rect )
3330 && ( baseArrayLayer == rhs.baseArrayLayer )
3331 && ( layerCount == rhs.layerCount );
3332 }
3333
3334 bool operator!=( ClearRect const& rhs ) const
3335 {
3336 return !operator==( rhs );
3337 }
3338
3339 Rect2D rect;
3340 uint32_t baseArrayLayer;
3341 uint32_t layerCount;
3342 };
3343 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3344
3345 struct ExtensionProperties
3346 {
3347 operator const VkExtensionProperties&() const
3348 {
3349 return *reinterpret_cast<const VkExtensionProperties*>(this);
3350 }
3351
3352 bool operator==( ExtensionProperties const& rhs ) const
3353 {
3354 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3355 && ( specVersion == rhs.specVersion );
3356 }
3357
3358 bool operator!=( ExtensionProperties const& rhs ) const
3359 {
3360 return !operator==( rhs );
3361 }
3362
3363 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3364 uint32_t specVersion;
3365 };
3366 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3367
3368 struct LayerProperties
3369 {
3370 operator const VkLayerProperties&() const
3371 {
3372 return *reinterpret_cast<const VkLayerProperties*>(this);
3373 }
3374
3375 bool operator==( LayerProperties const& rhs ) const
3376 {
3377 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3378 && ( specVersion == rhs.specVersion )
3379 && ( implementationVersion == rhs.implementationVersion )
3380 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3381 }
3382
3383 bool operator!=( LayerProperties const& rhs ) const
3384 {
3385 return !operator==( rhs );
3386 }
3387
3388 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3389 uint32_t specVersion;
3390 uint32_t implementationVersion;
3391 char description[VK_MAX_DESCRIPTION_SIZE];
3392 };
3393 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3394
3395 struct AllocationCallbacks
3396 {
3397 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3398 : pUserData( pUserData_ )
3399 , pfnAllocation( pfnAllocation_ )
3400 , pfnReallocation( pfnReallocation_ )
3401 , pfnFree( pfnFree_ )
3402 , pfnInternalAllocation( pfnInternalAllocation_ )
3403 , pfnInternalFree( pfnInternalFree_ )
3404 {
3405 }
3406
3407 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3408 {
3409 memcpy( this, &rhs, sizeof(AllocationCallbacks) );
3410 }
3411
3412 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3413 {
3414 memcpy( this, &rhs, sizeof(AllocationCallbacks) );
3415 return *this;
3416 }
3417
3418 AllocationCallbacks& setPUserData( void* pUserData_ )
3419 {
3420 pUserData = pUserData_;
3421 return *this;
3422 }
3423
3424 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3425 {
3426 pfnAllocation = pfnAllocation_;
3427 return *this;
3428 }
3429
3430 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3431 {
3432 pfnReallocation = pfnReallocation_;
3433 return *this;
3434 }
3435
3436 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3437 {
3438 pfnFree = pfnFree_;
3439 return *this;
3440 }
3441
3442 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3443 {
3444 pfnInternalAllocation = pfnInternalAllocation_;
3445 return *this;
3446 }
3447
3448 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3449 {
3450 pfnInternalFree = pfnInternalFree_;
3451 return *this;
3452 }
3453
3454 operator const VkAllocationCallbacks&() const
3455 {
3456 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3457 }
3458
3459 bool operator==( AllocationCallbacks const& rhs ) const
3460 {
3461 return ( pUserData == rhs.pUserData )
3462 && ( pfnAllocation == rhs.pfnAllocation )
3463 && ( pfnReallocation == rhs.pfnReallocation )
3464 && ( pfnFree == rhs.pfnFree )
3465 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3466 && ( pfnInternalFree == rhs.pfnInternalFree );
3467 }
3468
3469 bool operator!=( AllocationCallbacks const& rhs ) const
3470 {
3471 return !operator==( rhs );
3472 }
3473
3474 void* pUserData;
3475 PFN_vkAllocationFunction pfnAllocation;
3476 PFN_vkReallocationFunction pfnReallocation;
3477 PFN_vkFreeFunction pfnFree;
3478 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3479 PFN_vkInternalFreeNotification pfnInternalFree;
3480 };
3481 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3482
3483 struct MemoryRequirements
3484 {
3485 operator const VkMemoryRequirements&() const
3486 {
3487 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3488 }
3489
3490 bool operator==( MemoryRequirements const& rhs ) const
3491 {
3492 return ( size == rhs.size )
3493 && ( alignment == rhs.alignment )
3494 && ( memoryTypeBits == rhs.memoryTypeBits );
3495 }
3496
3497 bool operator!=( MemoryRequirements const& rhs ) const
3498 {
3499 return !operator==( rhs );
3500 }
3501
3502 DeviceSize size;
3503 DeviceSize alignment;
3504 uint32_t memoryTypeBits;
3505 };
3506 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3507
3508 struct DescriptorBufferInfo
3509 {
3510 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3511 : buffer( buffer_ )
3512 , offset( offset_ )
3513 , range( range_ )
3514 {
3515 }
3516
3517 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3518 {
3519 memcpy( this, &rhs, sizeof(DescriptorBufferInfo) );
3520 }
3521
3522 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3523 {
3524 memcpy( this, &rhs, sizeof(DescriptorBufferInfo) );
3525 return *this;
3526 }
3527
3528 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3529 {
3530 buffer = buffer_;
3531 return *this;
3532 }
3533
3534 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3535 {
3536 offset = offset_;
3537 return *this;
3538 }
3539
3540 DescriptorBufferInfo& setRange( DeviceSize range_ )
3541 {
3542 range = range_;
3543 return *this;
3544 }
3545
3546 operator const VkDescriptorBufferInfo&() const
3547 {
3548 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3549 }
3550
3551 bool operator==( DescriptorBufferInfo const& rhs ) const
3552 {
3553 return ( buffer == rhs.buffer )
3554 && ( offset == rhs.offset )
3555 && ( range == rhs.range );
3556 }
3557
3558 bool operator!=( DescriptorBufferInfo const& rhs ) const
3559 {
3560 return !operator==( rhs );
3561 }
3562
3563 Buffer buffer;
3564 DeviceSize offset;
3565 DeviceSize range;
3566 };
3567 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3568
3569 struct SubresourceLayout
3570 {
3571 operator const VkSubresourceLayout&() const
3572 {
3573 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3574 }
3575
3576 bool operator==( SubresourceLayout const& rhs ) const
3577 {
3578 return ( offset == rhs.offset )
3579 && ( size == rhs.size )
3580 && ( rowPitch == rhs.rowPitch )
3581 && ( arrayPitch == rhs.arrayPitch )
3582 && ( depthPitch == rhs.depthPitch );
3583 }
3584
3585 bool operator!=( SubresourceLayout const& rhs ) const
3586 {
3587 return !operator==( rhs );
3588 }
3589
3590 DeviceSize offset;
3591 DeviceSize size;
3592 DeviceSize rowPitch;
3593 DeviceSize arrayPitch;
3594 DeviceSize depthPitch;
3595 };
3596 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3597
3598 struct BufferCopy
3599 {
3600 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3601 : srcOffset( srcOffset_ )
3602 , dstOffset( dstOffset_ )
3603 , size( size_ )
3604 {
3605 }
3606
3607 BufferCopy( VkBufferCopy const & rhs )
3608 {
3609 memcpy( this, &rhs, sizeof(BufferCopy) );
3610 }
3611
3612 BufferCopy& operator=( VkBufferCopy const & rhs )
3613 {
3614 memcpy( this, &rhs, sizeof(BufferCopy) );
3615 return *this;
3616 }
3617
3618 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3619 {
3620 srcOffset = srcOffset_;
3621 return *this;
3622 }
3623
3624 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3625 {
3626 dstOffset = dstOffset_;
3627 return *this;
3628 }
3629
3630 BufferCopy& setSize( DeviceSize size_ )
3631 {
3632 size = size_;
3633 return *this;
3634 }
3635
3636 operator const VkBufferCopy&() const
3637 {
3638 return *reinterpret_cast<const VkBufferCopy*>(this);
3639 }
3640
3641 bool operator==( BufferCopy const& rhs ) const
3642 {
3643 return ( srcOffset == rhs.srcOffset )
3644 && ( dstOffset == rhs.dstOffset )
3645 && ( size == rhs.size );
3646 }
3647
3648 bool operator!=( BufferCopy const& rhs ) const
3649 {
3650 return !operator==( rhs );
3651 }
3652
3653 DeviceSize srcOffset;
3654 DeviceSize dstOffset;
3655 DeviceSize size;
3656 };
3657 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3658
3659 struct SpecializationMapEntry
3660 {
3661 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3662 : constantID( constantID_ )
3663 , offset( offset_ )
3664 , size( size_ )
3665 {
3666 }
3667
3668 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3669 {
3670 memcpy( this, &rhs, sizeof(SpecializationMapEntry) );
3671 }
3672
3673 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3674 {
3675 memcpy( this, &rhs, sizeof(SpecializationMapEntry) );
3676 return *this;
3677 }
3678
3679 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
3680 {
3681 constantID = constantID_;
3682 return *this;
3683 }
3684
3685 SpecializationMapEntry& setOffset( uint32_t offset_ )
3686 {
3687 offset = offset_;
3688 return *this;
3689 }
3690
3691 SpecializationMapEntry& setSize( size_t size_ )
3692 {
3693 size = size_;
3694 return *this;
3695 }
3696
3697 operator const VkSpecializationMapEntry&() const
3698 {
3699 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
3700 }
3701
3702 bool operator==( SpecializationMapEntry const& rhs ) const
3703 {
3704 return ( constantID == rhs.constantID )
3705 && ( offset == rhs.offset )
3706 && ( size == rhs.size );
3707 }
3708
3709 bool operator!=( SpecializationMapEntry const& rhs ) const
3710 {
3711 return !operator==( rhs );
3712 }
3713
3714 uint32_t constantID;
3715 uint32_t offset;
3716 size_t size;
3717 };
3718 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
3719
3720 struct SpecializationInfo
3721 {
3722 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
3723 : mapEntryCount( mapEntryCount_ )
3724 , pMapEntries( pMapEntries_ )
3725 , dataSize( dataSize_ )
3726 , pData( pData_ )
3727 {
3728 }
3729
3730 SpecializationInfo( VkSpecializationInfo const & rhs )
3731 {
3732 memcpy( this, &rhs, sizeof(SpecializationInfo) );
3733 }
3734
3735 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
3736 {
3737 memcpy( this, &rhs, sizeof(SpecializationInfo) );
3738 return *this;
3739 }
3740
3741 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
3742 {
3743 mapEntryCount = mapEntryCount_;
3744 return *this;
3745 }
3746
3747 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
3748 {
3749 pMapEntries = pMapEntries_;
3750 return *this;
3751 }
3752
3753 SpecializationInfo& setDataSize( size_t dataSize_ )
3754 {
3755 dataSize = dataSize_;
3756 return *this;
3757 }
3758
3759 SpecializationInfo& setPData( const void* pData_ )
3760 {
3761 pData = pData_;
3762 return *this;
3763 }
3764
3765 operator const VkSpecializationInfo&() const
3766 {
3767 return *reinterpret_cast<const VkSpecializationInfo*>(this);
3768 }
3769
3770 bool operator==( SpecializationInfo const& rhs ) const
3771 {
3772 return ( mapEntryCount == rhs.mapEntryCount )
3773 && ( pMapEntries == rhs.pMapEntries )
3774 && ( dataSize == rhs.dataSize )
3775 && ( pData == rhs.pData );
3776 }
3777
3778 bool operator!=( SpecializationInfo const& rhs ) const
3779 {
3780 return !operator==( rhs );
3781 }
3782
3783 uint32_t mapEntryCount;
3784 const SpecializationMapEntry* pMapEntries;
3785 size_t dataSize;
3786 const void* pData;
3787 };
3788 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
3789
3790 union ClearColorValue
3791 {
3792 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
3793 {
3794 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3795 }
3796
3797 ClearColorValue( const std::array<int32_t,4>& int32_ )
3798 {
3799 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3800 }
3801
3802 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
3803 {
3804 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3805 }
3806
3807 ClearColorValue& setFloat32( std::array<float,4> float32_ )
3808 {
3809 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
3810 return *this;
3811 }
3812
3813 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
3814 {
3815 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
3816 return *this;
3817 }
3818
3819 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
3820 {
3821 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
3822 return *this;
3823 }
3824
3825 operator VkClearColorValue const& () const
3826 {
3827 return *reinterpret_cast<const VkClearColorValue*>(this);
3828 }
3829
3830 float float32[4];
3831 int32_t int32[4];
3832 uint32_t uint32[4];
3833 };
3834
3835 struct ClearDepthStencilValue
3836 {
3837 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
3838 : depth( depth_ )
3839 , stencil( stencil_ )
3840 {
3841 }
3842
3843 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
3844 {
3845 memcpy( this, &rhs, sizeof(ClearDepthStencilValue) );
3846 }
3847
3848 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
3849 {
3850 memcpy( this, &rhs, sizeof(ClearDepthStencilValue) );
3851 return *this;
3852 }
3853
3854 ClearDepthStencilValue& setDepth( float depth_ )
3855 {
3856 depth = depth_;
3857 return *this;
3858 }
3859
3860 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
3861 {
3862 stencil = stencil_;
3863 return *this;
3864 }
3865
3866 operator const VkClearDepthStencilValue&() const
3867 {
3868 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
3869 }
3870
3871 bool operator==( ClearDepthStencilValue const& rhs ) const
3872 {
3873 return ( depth == rhs.depth )
3874 && ( stencil == rhs.stencil );
3875 }
3876
3877 bool operator!=( ClearDepthStencilValue const& rhs ) const
3878 {
3879 return !operator==( rhs );
3880 }
3881
3882 float depth;
3883 uint32_t stencil;
3884 };
3885 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
3886
3887 union ClearValue
3888 {
3889 ClearValue( ClearColorValue color_ = ClearColorValue() )
3890 {
3891 color = color_;
3892 }
3893
3894 ClearValue( ClearDepthStencilValue depthStencil_ )
3895 {
3896 depthStencil = depthStencil_;
3897 }
3898
3899 ClearValue& setColor( ClearColorValue color_ )
3900 {
3901 color = color_;
3902 return *this;
3903 }
3904
3905 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
3906 {
3907 depthStencil = depthStencil_;
3908 return *this;
3909 }
3910
3911 operator VkClearValue const& () const
3912 {
3913 return *reinterpret_cast<const VkClearValue*>(this);
3914 }
3915
3916#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3917 ClearColorValue color;
3918 ClearDepthStencilValue depthStencil;
3919#else
3920 VkClearColorValue color;
3921 VkClearDepthStencilValue depthStencil;
3922#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
3923 };
3924
3925 struct PhysicalDeviceFeatures
3926 {
3927 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 )
3928 : robustBufferAccess( robustBufferAccess_ )
3929 , fullDrawIndexUint32( fullDrawIndexUint32_ )
3930 , imageCubeArray( imageCubeArray_ )
3931 , independentBlend( independentBlend_ )
3932 , geometryShader( geometryShader_ )
3933 , tessellationShader( tessellationShader_ )
3934 , sampleRateShading( sampleRateShading_ )
3935 , dualSrcBlend( dualSrcBlend_ )
3936 , logicOp( logicOp_ )
3937 , multiDrawIndirect( multiDrawIndirect_ )
3938 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
3939 , depthClamp( depthClamp_ )
3940 , depthBiasClamp( depthBiasClamp_ )
3941 , fillModeNonSolid( fillModeNonSolid_ )
3942 , depthBounds( depthBounds_ )
3943 , wideLines( wideLines_ )
3944 , largePoints( largePoints_ )
3945 , alphaToOne( alphaToOne_ )
3946 , multiViewport( multiViewport_ )
3947 , samplerAnisotropy( samplerAnisotropy_ )
3948 , textureCompressionETC2( textureCompressionETC2_ )
3949 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
3950 , textureCompressionBC( textureCompressionBC_ )
3951 , occlusionQueryPrecise( occlusionQueryPrecise_ )
3952 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
3953 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
3954 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
3955 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
3956 , shaderImageGatherExtended( shaderImageGatherExtended_ )
3957 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
3958 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
3959 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
3960 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
3961 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
3962 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
3963 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
3964 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
3965 , shaderClipDistance( shaderClipDistance_ )
3966 , shaderCullDistance( shaderCullDistance_ )
3967 , shaderFloat64( shaderFloat64_ )
3968 , shaderInt64( shaderInt64_ )
3969 , shaderInt16( shaderInt16_ )
3970 , shaderResourceResidency( shaderResourceResidency_ )
3971 , shaderResourceMinLod( shaderResourceMinLod_ )
3972 , sparseBinding( sparseBinding_ )
3973 , sparseResidencyBuffer( sparseResidencyBuffer_ )
3974 , sparseResidencyImage2D( sparseResidencyImage2D_ )
3975 , sparseResidencyImage3D( sparseResidencyImage3D_ )
3976 , sparseResidency2Samples( sparseResidency2Samples_ )
3977 , sparseResidency4Samples( sparseResidency4Samples_ )
3978 , sparseResidency8Samples( sparseResidency8Samples_ )
3979 , sparseResidency16Samples( sparseResidency16Samples_ )
3980 , sparseResidencyAliased( sparseResidencyAliased_ )
3981 , variableMultisampleRate( variableMultisampleRate_ )
3982 , inheritedQueries( inheritedQueries_ )
3983 {
3984 }
3985
3986 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
3987 {
3988 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures) );
3989 }
3990
3991 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
3992 {
3993 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures) );
3994 return *this;
3995 }
3996
3997 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
3998 {
3999 robustBufferAccess = robustBufferAccess_;
4000 return *this;
4001 }
4002
4003 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4004 {
4005 fullDrawIndexUint32 = fullDrawIndexUint32_;
4006 return *this;
4007 }
4008
4009 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4010 {
4011 imageCubeArray = imageCubeArray_;
4012 return *this;
4013 }
4014
4015 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4016 {
4017 independentBlend = independentBlend_;
4018 return *this;
4019 }
4020
4021 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4022 {
4023 geometryShader = geometryShader_;
4024 return *this;
4025 }
4026
4027 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4028 {
4029 tessellationShader = tessellationShader_;
4030 return *this;
4031 }
4032
4033 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4034 {
4035 sampleRateShading = sampleRateShading_;
4036 return *this;
4037 }
4038
4039 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4040 {
4041 dualSrcBlend = dualSrcBlend_;
4042 return *this;
4043 }
4044
4045 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4046 {
4047 logicOp = logicOp_;
4048 return *this;
4049 }
4050
4051 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4052 {
4053 multiDrawIndirect = multiDrawIndirect_;
4054 return *this;
4055 }
4056
4057 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4058 {
4059 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4060 return *this;
4061 }
4062
4063 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4064 {
4065 depthClamp = depthClamp_;
4066 return *this;
4067 }
4068
4069 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4070 {
4071 depthBiasClamp = depthBiasClamp_;
4072 return *this;
4073 }
4074
4075 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4076 {
4077 fillModeNonSolid = fillModeNonSolid_;
4078 return *this;
4079 }
4080
4081 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4082 {
4083 depthBounds = depthBounds_;
4084 return *this;
4085 }
4086
4087 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4088 {
4089 wideLines = wideLines_;
4090 return *this;
4091 }
4092
4093 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4094 {
4095 largePoints = largePoints_;
4096 return *this;
4097 }
4098
4099 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4100 {
4101 alphaToOne = alphaToOne_;
4102 return *this;
4103 }
4104
4105 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4106 {
4107 multiViewport = multiViewport_;
4108 return *this;
4109 }
4110
4111 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4112 {
4113 samplerAnisotropy = samplerAnisotropy_;
4114 return *this;
4115 }
4116
4117 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4118 {
4119 textureCompressionETC2 = textureCompressionETC2_;
4120 return *this;
4121 }
4122
4123 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4124 {
4125 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4126 return *this;
4127 }
4128
4129 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4130 {
4131 textureCompressionBC = textureCompressionBC_;
4132 return *this;
4133 }
4134
4135 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4136 {
4137 occlusionQueryPrecise = occlusionQueryPrecise_;
4138 return *this;
4139 }
4140
4141 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4142 {
4143 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4144 return *this;
4145 }
4146
4147 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4148 {
4149 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4150 return *this;
4151 }
4152
4153 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4154 {
4155 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4156 return *this;
4157 }
4158
4159 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4160 {
4161 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4162 return *this;
4163 }
4164
4165 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4166 {
4167 shaderImageGatherExtended = shaderImageGatherExtended_;
4168 return *this;
4169 }
4170
4171 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4172 {
4173 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4174 return *this;
4175 }
4176
4177 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4178 {
4179 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4180 return *this;
4181 }
4182
4183 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4184 {
4185 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4186 return *this;
4187 }
4188
4189 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4190 {
4191 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4192 return *this;
4193 }
4194
4195 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4196 {
4197 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4198 return *this;
4199 }
4200
4201 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4202 {
4203 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4204 return *this;
4205 }
4206
4207 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4208 {
4209 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4210 return *this;
4211 }
4212
4213 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4214 {
4215 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4216 return *this;
4217 }
4218
4219 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4220 {
4221 shaderClipDistance = shaderClipDistance_;
4222 return *this;
4223 }
4224
4225 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4226 {
4227 shaderCullDistance = shaderCullDistance_;
4228 return *this;
4229 }
4230
4231 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4232 {
4233 shaderFloat64 = shaderFloat64_;
4234 return *this;
4235 }
4236
4237 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4238 {
4239 shaderInt64 = shaderInt64_;
4240 return *this;
4241 }
4242
4243 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4244 {
4245 shaderInt16 = shaderInt16_;
4246 return *this;
4247 }
4248
4249 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4250 {
4251 shaderResourceResidency = shaderResourceResidency_;
4252 return *this;
4253 }
4254
4255 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4256 {
4257 shaderResourceMinLod = shaderResourceMinLod_;
4258 return *this;
4259 }
4260
4261 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4262 {
4263 sparseBinding = sparseBinding_;
4264 return *this;
4265 }
4266
4267 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4268 {
4269 sparseResidencyBuffer = sparseResidencyBuffer_;
4270 return *this;
4271 }
4272
4273 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4274 {
4275 sparseResidencyImage2D = sparseResidencyImage2D_;
4276 return *this;
4277 }
4278
4279 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4280 {
4281 sparseResidencyImage3D = sparseResidencyImage3D_;
4282 return *this;
4283 }
4284
4285 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4286 {
4287 sparseResidency2Samples = sparseResidency2Samples_;
4288 return *this;
4289 }
4290
4291 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4292 {
4293 sparseResidency4Samples = sparseResidency4Samples_;
4294 return *this;
4295 }
4296
4297 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4298 {
4299 sparseResidency8Samples = sparseResidency8Samples_;
4300 return *this;
4301 }
4302
4303 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4304 {
4305 sparseResidency16Samples = sparseResidency16Samples_;
4306 return *this;
4307 }
4308
4309 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4310 {
4311 sparseResidencyAliased = sparseResidencyAliased_;
4312 return *this;
4313 }
4314
4315 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4316 {
4317 variableMultisampleRate = variableMultisampleRate_;
4318 return *this;
4319 }
4320
4321 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4322 {
4323 inheritedQueries = inheritedQueries_;
4324 return *this;
4325 }
4326
4327 operator const VkPhysicalDeviceFeatures&() const
4328 {
4329 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4330 }
4331
4332 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4333 {
4334 return ( robustBufferAccess == rhs.robustBufferAccess )
4335 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4336 && ( imageCubeArray == rhs.imageCubeArray )
4337 && ( independentBlend == rhs.independentBlend )
4338 && ( geometryShader == rhs.geometryShader )
4339 && ( tessellationShader == rhs.tessellationShader )
4340 && ( sampleRateShading == rhs.sampleRateShading )
4341 && ( dualSrcBlend == rhs.dualSrcBlend )
4342 && ( logicOp == rhs.logicOp )
4343 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4344 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4345 && ( depthClamp == rhs.depthClamp )
4346 && ( depthBiasClamp == rhs.depthBiasClamp )
4347 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4348 && ( depthBounds == rhs.depthBounds )
4349 && ( wideLines == rhs.wideLines )
4350 && ( largePoints == rhs.largePoints )
4351 && ( alphaToOne == rhs.alphaToOne )
4352 && ( multiViewport == rhs.multiViewport )
4353 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4354 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4355 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4356 && ( textureCompressionBC == rhs.textureCompressionBC )
4357 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4358 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4359 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4360 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4361 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4362 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4363 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4364 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4365 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4366 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4367 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4368 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4369 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4370 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4371 && ( shaderClipDistance == rhs.shaderClipDistance )
4372 && ( shaderCullDistance == rhs.shaderCullDistance )
4373 && ( shaderFloat64 == rhs.shaderFloat64 )
4374 && ( shaderInt64 == rhs.shaderInt64 )
4375 && ( shaderInt16 == rhs.shaderInt16 )
4376 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4377 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4378 && ( sparseBinding == rhs.sparseBinding )
4379 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4380 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4381 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4382 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4383 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4384 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4385 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4386 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4387 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4388 && ( inheritedQueries == rhs.inheritedQueries );
4389 }
4390
4391 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4392 {
4393 return !operator==( rhs );
4394 }
4395
4396 Bool32 robustBufferAccess;
4397 Bool32 fullDrawIndexUint32;
4398 Bool32 imageCubeArray;
4399 Bool32 independentBlend;
4400 Bool32 geometryShader;
4401 Bool32 tessellationShader;
4402 Bool32 sampleRateShading;
4403 Bool32 dualSrcBlend;
4404 Bool32 logicOp;
4405 Bool32 multiDrawIndirect;
4406 Bool32 drawIndirectFirstInstance;
4407 Bool32 depthClamp;
4408 Bool32 depthBiasClamp;
4409 Bool32 fillModeNonSolid;
4410 Bool32 depthBounds;
4411 Bool32 wideLines;
4412 Bool32 largePoints;
4413 Bool32 alphaToOne;
4414 Bool32 multiViewport;
4415 Bool32 samplerAnisotropy;
4416 Bool32 textureCompressionETC2;
4417 Bool32 textureCompressionASTC_LDR;
4418 Bool32 textureCompressionBC;
4419 Bool32 occlusionQueryPrecise;
4420 Bool32 pipelineStatisticsQuery;
4421 Bool32 vertexPipelineStoresAndAtomics;
4422 Bool32 fragmentStoresAndAtomics;
4423 Bool32 shaderTessellationAndGeometryPointSize;
4424 Bool32 shaderImageGatherExtended;
4425 Bool32 shaderStorageImageExtendedFormats;
4426 Bool32 shaderStorageImageMultisample;
4427 Bool32 shaderStorageImageReadWithoutFormat;
4428 Bool32 shaderStorageImageWriteWithoutFormat;
4429 Bool32 shaderUniformBufferArrayDynamicIndexing;
4430 Bool32 shaderSampledImageArrayDynamicIndexing;
4431 Bool32 shaderStorageBufferArrayDynamicIndexing;
4432 Bool32 shaderStorageImageArrayDynamicIndexing;
4433 Bool32 shaderClipDistance;
4434 Bool32 shaderCullDistance;
4435 Bool32 shaderFloat64;
4436 Bool32 shaderInt64;
4437 Bool32 shaderInt16;
4438 Bool32 shaderResourceResidency;
4439 Bool32 shaderResourceMinLod;
4440 Bool32 sparseBinding;
4441 Bool32 sparseResidencyBuffer;
4442 Bool32 sparseResidencyImage2D;
4443 Bool32 sparseResidencyImage3D;
4444 Bool32 sparseResidency2Samples;
4445 Bool32 sparseResidency4Samples;
4446 Bool32 sparseResidency8Samples;
4447 Bool32 sparseResidency16Samples;
4448 Bool32 sparseResidencyAliased;
4449 Bool32 variableMultisampleRate;
4450 Bool32 inheritedQueries;
4451 };
4452 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4453
4454 struct PhysicalDeviceSparseProperties
4455 {
4456 operator const VkPhysicalDeviceSparseProperties&() const
4457 {
4458 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4459 }
4460
4461 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4462 {
4463 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4464 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4465 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4466 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4467 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4468 }
4469
4470 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4471 {
4472 return !operator==( rhs );
4473 }
4474
4475 Bool32 residencyStandard2DBlockShape;
4476 Bool32 residencyStandard2DMultisampleBlockShape;
4477 Bool32 residencyStandard3DBlockShape;
4478 Bool32 residencyAlignedMipSize;
4479 Bool32 residencyNonResidentStrict;
4480 };
4481 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4482
4483 struct DrawIndirectCommand
4484 {
4485 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4486 : vertexCount( vertexCount_ )
4487 , instanceCount( instanceCount_ )
4488 , firstVertex( firstVertex_ )
4489 , firstInstance( firstInstance_ )
4490 {
4491 }
4492
4493 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4494 {
4495 memcpy( this, &rhs, sizeof(DrawIndirectCommand) );
4496 }
4497
4498 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4499 {
4500 memcpy( this, &rhs, sizeof(DrawIndirectCommand) );
4501 return *this;
4502 }
4503
4504 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4505 {
4506 vertexCount = vertexCount_;
4507 return *this;
4508 }
4509
4510 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4511 {
4512 instanceCount = instanceCount_;
4513 return *this;
4514 }
4515
4516 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4517 {
4518 firstVertex = firstVertex_;
4519 return *this;
4520 }
4521
4522 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4523 {
4524 firstInstance = firstInstance_;
4525 return *this;
4526 }
4527
4528 operator const VkDrawIndirectCommand&() const
4529 {
4530 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4531 }
4532
4533 bool operator==( DrawIndirectCommand const& rhs ) const
4534 {
4535 return ( vertexCount == rhs.vertexCount )
4536 && ( instanceCount == rhs.instanceCount )
4537 && ( firstVertex == rhs.firstVertex )
4538 && ( firstInstance == rhs.firstInstance );
4539 }
4540
4541 bool operator!=( DrawIndirectCommand const& rhs ) const
4542 {
4543 return !operator==( rhs );
4544 }
4545
4546 uint32_t vertexCount;
4547 uint32_t instanceCount;
4548 uint32_t firstVertex;
4549 uint32_t firstInstance;
4550 };
4551 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4552
4553 struct DrawIndexedIndirectCommand
4554 {
4555 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4556 : indexCount( indexCount_ )
4557 , instanceCount( instanceCount_ )
4558 , firstIndex( firstIndex_ )
4559 , vertexOffset( vertexOffset_ )
4560 , firstInstance( firstInstance_ )
4561 {
4562 }
4563
4564 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4565 {
4566 memcpy( this, &rhs, sizeof(DrawIndexedIndirectCommand) );
4567 }
4568
4569 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4570 {
4571 memcpy( this, &rhs, sizeof(DrawIndexedIndirectCommand) );
4572 return *this;
4573 }
4574
4575 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4576 {
4577 indexCount = indexCount_;
4578 return *this;
4579 }
4580
4581 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4582 {
4583 instanceCount = instanceCount_;
4584 return *this;
4585 }
4586
4587 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4588 {
4589 firstIndex = firstIndex_;
4590 return *this;
4591 }
4592
4593 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4594 {
4595 vertexOffset = vertexOffset_;
4596 return *this;
4597 }
4598
4599 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4600 {
4601 firstInstance = firstInstance_;
4602 return *this;
4603 }
4604
4605 operator const VkDrawIndexedIndirectCommand&() const
4606 {
4607 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4608 }
4609
4610 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4611 {
4612 return ( indexCount == rhs.indexCount )
4613 && ( instanceCount == rhs.instanceCount )
4614 && ( firstIndex == rhs.firstIndex )
4615 && ( vertexOffset == rhs.vertexOffset )
4616 && ( firstInstance == rhs.firstInstance );
4617 }
4618
4619 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4620 {
4621 return !operator==( rhs );
4622 }
4623
4624 uint32_t indexCount;
4625 uint32_t instanceCount;
4626 uint32_t firstIndex;
4627 int32_t vertexOffset;
4628 uint32_t firstInstance;
4629 };
4630 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4631
4632 struct DispatchIndirectCommand
4633 {
4634 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4635 : x( x_ )
4636 , y( y_ )
4637 , z( z_ )
4638 {
4639 }
4640
4641 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4642 {
4643 memcpy( this, &rhs, sizeof(DispatchIndirectCommand) );
4644 }
4645
4646 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4647 {
4648 memcpy( this, &rhs, sizeof(DispatchIndirectCommand) );
4649 return *this;
4650 }
4651
4652 DispatchIndirectCommand& setX( uint32_t x_ )
4653 {
4654 x = x_;
4655 return *this;
4656 }
4657
4658 DispatchIndirectCommand& setY( uint32_t y_ )
4659 {
4660 y = y_;
4661 return *this;
4662 }
4663
4664 DispatchIndirectCommand& setZ( uint32_t z_ )
4665 {
4666 z = z_;
4667 return *this;
4668 }
4669
4670 operator const VkDispatchIndirectCommand&() const
4671 {
4672 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4673 }
4674
4675 bool operator==( DispatchIndirectCommand const& rhs ) const
4676 {
4677 return ( x == rhs.x )
4678 && ( y == rhs.y )
4679 && ( z == rhs.z );
4680 }
4681
4682 bool operator!=( DispatchIndirectCommand const& rhs ) const
4683 {
4684 return !operator==( rhs );
4685 }
4686
4687 uint32_t x;
4688 uint32_t y;
4689 uint32_t z;
4690 };
4691 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
4692
4693 struct DisplayPlanePropertiesKHR
4694 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004695 operator const VkDisplayPlanePropertiesKHR&() const
4696 {
4697 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
4698 }
4699
4700 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
4701 {
4702 return ( currentDisplay == rhs.currentDisplay )
4703 && ( currentStackIndex == rhs.currentStackIndex );
4704 }
4705
4706 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
4707 {
4708 return !operator==( rhs );
4709 }
4710
4711 DisplayKHR currentDisplay;
4712 uint32_t currentStackIndex;
4713 };
4714 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
4715
4716 struct DisplayModeParametersKHR
4717 {
4718 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
4719 : visibleRegion( visibleRegion_ )
4720 , refreshRate( refreshRate_ )
4721 {
4722 }
4723
4724 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
4725 {
4726 memcpy( this, &rhs, sizeof(DisplayModeParametersKHR) );
4727 }
4728
4729 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
4730 {
4731 memcpy( this, &rhs, sizeof(DisplayModeParametersKHR) );
4732 return *this;
4733 }
4734
4735 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
4736 {
4737 visibleRegion = visibleRegion_;
4738 return *this;
4739 }
4740
4741 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
4742 {
4743 refreshRate = refreshRate_;
4744 return *this;
4745 }
4746
4747 operator const VkDisplayModeParametersKHR&() const
4748 {
4749 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
4750 }
4751
4752 bool operator==( DisplayModeParametersKHR const& rhs ) const
4753 {
4754 return ( visibleRegion == rhs.visibleRegion )
4755 && ( refreshRate == rhs.refreshRate );
4756 }
4757
4758 bool operator!=( DisplayModeParametersKHR const& rhs ) const
4759 {
4760 return !operator==( rhs );
4761 }
4762
4763 Extent2D visibleRegion;
4764 uint32_t refreshRate;
4765 };
4766 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
4767
4768 struct DisplayModePropertiesKHR
4769 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004770 operator const VkDisplayModePropertiesKHR&() const
4771 {
4772 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
4773 }
4774
4775 bool operator==( DisplayModePropertiesKHR const& rhs ) const
4776 {
4777 return ( displayMode == rhs.displayMode )
4778 && ( parameters == rhs.parameters );
4779 }
4780
4781 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
4782 {
4783 return !operator==( rhs );
4784 }
4785
4786 DisplayModeKHR displayMode;
4787 DisplayModeParametersKHR parameters;
4788 };
4789 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
4790
Mark Lobodzinski3289d762017-04-03 08:22:04 -06004791 struct RectLayerKHR
4792 {
4793 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
4794 : offset( offset_ )
4795 , extent( extent_ )
4796 , layer( layer_ )
4797 {
4798 }
4799
4800 RectLayerKHR( VkRectLayerKHR const & rhs )
4801 {
4802 memcpy( this, &rhs, sizeof(RectLayerKHR) );
4803 }
4804
4805 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
4806 {
4807 memcpy( this, &rhs, sizeof(RectLayerKHR) );
4808 return *this;
4809 }
4810
4811 RectLayerKHR& setOffset( Offset2D offset_ )
4812 {
4813 offset = offset_;
4814 return *this;
4815 }
4816
4817 RectLayerKHR& setExtent( Extent2D extent_ )
4818 {
4819 extent = extent_;
4820 return *this;
4821 }
4822
4823 RectLayerKHR& setLayer( uint32_t layer_ )
4824 {
4825 layer = layer_;
4826 return *this;
4827 }
4828
4829 operator const VkRectLayerKHR&() const
4830 {
4831 return *reinterpret_cast<const VkRectLayerKHR*>(this);
4832 }
4833
4834 bool operator==( RectLayerKHR const& rhs ) const
4835 {
4836 return ( offset == rhs.offset )
4837 && ( extent == rhs.extent )
4838 && ( layer == rhs.layer );
4839 }
4840
4841 bool operator!=( RectLayerKHR const& rhs ) const
4842 {
4843 return !operator==( rhs );
4844 }
4845
4846 Offset2D offset;
4847 Extent2D extent;
4848 uint32_t layer;
4849 };
4850 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
4851
4852 struct PresentRegionKHR
4853 {
4854 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
4855 : rectangleCount( rectangleCount_ )
4856 , pRectangles( pRectangles_ )
4857 {
4858 }
4859
4860 PresentRegionKHR( VkPresentRegionKHR const & rhs )
4861 {
4862 memcpy( this, &rhs, sizeof(PresentRegionKHR) );
4863 }
4864
4865 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
4866 {
4867 memcpy( this, &rhs, sizeof(PresentRegionKHR) );
4868 return *this;
4869 }
4870
4871 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
4872 {
4873 rectangleCount = rectangleCount_;
4874 return *this;
4875 }
4876
4877 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
4878 {
4879 pRectangles = pRectangles_;
4880 return *this;
4881 }
4882
4883 operator const VkPresentRegionKHR&() const
4884 {
4885 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
4886 }
4887
4888 bool operator==( PresentRegionKHR const& rhs ) const
4889 {
4890 return ( rectangleCount == rhs.rectangleCount )
4891 && ( pRectangles == rhs.pRectangles );
4892 }
4893
4894 bool operator!=( PresentRegionKHR const& rhs ) const
4895 {
4896 return !operator==( rhs );
4897 }
4898
4899 uint32_t rectangleCount;
4900 const RectLayerKHR* pRectangles;
4901 };
4902 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
4903
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06004904 struct XYColorEXT
4905 {
4906 XYColorEXT( float x_ = 0, float y_ = 0 )
4907 : x( x_ )
4908 , y( y_ )
4909 {
4910 }
4911
4912 XYColorEXT( VkXYColorEXT const & rhs )
4913 {
4914 memcpy( this, &rhs, sizeof(XYColorEXT) );
4915 }
4916
4917 XYColorEXT& operator=( VkXYColorEXT const & rhs )
4918 {
4919 memcpy( this, &rhs, sizeof(XYColorEXT) );
4920 return *this;
4921 }
4922
4923 XYColorEXT& setX( float x_ )
4924 {
4925 x = x_;
4926 return *this;
4927 }
4928
4929 XYColorEXT& setY( float y_ )
4930 {
4931 y = y_;
4932 return *this;
4933 }
4934
4935 operator const VkXYColorEXT&() const
4936 {
4937 return *reinterpret_cast<const VkXYColorEXT*>(this);
4938 }
4939
4940 bool operator==( XYColorEXT const& rhs ) const
4941 {
4942 return ( x == rhs.x )
4943 && ( y == rhs.y );
4944 }
4945
4946 bool operator!=( XYColorEXT const& rhs ) const
4947 {
4948 return !operator==( rhs );
4949 }
4950
4951 float x;
4952 float y;
4953 };
4954 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
4955
4956 struct RefreshCycleDurationGOOGLE
4957 {
4958 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
4959 : refreshDuration( refreshDuration_ )
4960 {
4961 }
4962
4963 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
4964 {
4965 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4966 }
4967
4968 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
4969 {
4970 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4971 return *this;
4972 }
4973
4974 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
4975 {
4976 refreshDuration = refreshDuration_;
4977 return *this;
4978 }
4979
4980 operator const VkRefreshCycleDurationGOOGLE&() const
4981 {
4982 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
4983 }
4984
4985 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
4986 {
4987 return ( refreshDuration == rhs.refreshDuration );
4988 }
4989
4990 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
4991 {
4992 return !operator==( rhs );
4993 }
4994
4995 uint64_t refreshDuration;
4996 };
4997 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
4998
4999 struct PastPresentationTimingGOOGLE
5000 {
5001 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5002 : presentID( presentID_ )
5003 , desiredPresentTime( desiredPresentTime_ )
5004 , actualPresentTime( actualPresentTime_ )
5005 , earliestPresentTime( earliestPresentTime_ )
5006 , presentMargin( presentMargin_ )
5007 {
5008 }
5009
5010 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5011 {
5012 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
5013 }
5014
5015 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5016 {
5017 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
5018 return *this;
5019 }
5020
5021 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5022 {
5023 presentID = presentID_;
5024 return *this;
5025 }
5026
5027 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5028 {
5029 desiredPresentTime = desiredPresentTime_;
5030 return *this;
5031 }
5032
5033 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5034 {
5035 actualPresentTime = actualPresentTime_;
5036 return *this;
5037 }
5038
5039 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5040 {
5041 earliestPresentTime = earliestPresentTime_;
5042 return *this;
5043 }
5044
5045 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5046 {
5047 presentMargin = presentMargin_;
5048 return *this;
5049 }
5050
5051 operator const VkPastPresentationTimingGOOGLE&() const
5052 {
5053 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5054 }
5055
5056 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5057 {
5058 return ( presentID == rhs.presentID )
5059 && ( desiredPresentTime == rhs.desiredPresentTime )
5060 && ( actualPresentTime == rhs.actualPresentTime )
5061 && ( earliestPresentTime == rhs.earliestPresentTime )
5062 && ( presentMargin == rhs.presentMargin );
5063 }
5064
5065 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5066 {
5067 return !operator==( rhs );
5068 }
5069
5070 uint32_t presentID;
5071 uint64_t desiredPresentTime;
5072 uint64_t actualPresentTime;
5073 uint64_t earliestPresentTime;
5074 uint64_t presentMargin;
5075 };
5076 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5077
5078 struct PresentTimeGOOGLE
5079 {
5080 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5081 : presentID( presentID_ )
5082 , desiredPresentTime( desiredPresentTime_ )
5083 {
5084 }
5085
5086 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5087 {
5088 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
5089 }
5090
5091 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5092 {
5093 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
5094 return *this;
5095 }
5096
5097 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5098 {
5099 presentID = presentID_;
5100 return *this;
5101 }
5102
5103 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5104 {
5105 desiredPresentTime = desiredPresentTime_;
5106 return *this;
5107 }
5108
5109 operator const VkPresentTimeGOOGLE&() const
5110 {
5111 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5112 }
5113
5114 bool operator==( PresentTimeGOOGLE const& rhs ) const
5115 {
5116 return ( presentID == rhs.presentID )
5117 && ( desiredPresentTime == rhs.desiredPresentTime );
5118 }
5119
5120 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5121 {
5122 return !operator==( rhs );
5123 }
5124
5125 uint32_t presentID;
5126 uint64_t desiredPresentTime;
5127 };
5128 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5129
Mark Young0f183a82017-02-28 09:58:04 -07005130 struct ViewportWScalingNV
5131 {
5132 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5133 : xcoeff( xcoeff_ )
5134 , ycoeff( ycoeff_ )
5135 {
5136 }
5137
5138 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5139 {
5140 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5141 }
5142
5143 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5144 {
5145 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5146 return *this;
5147 }
5148
5149 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5150 {
5151 xcoeff = xcoeff_;
5152 return *this;
5153 }
5154
5155 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5156 {
5157 ycoeff = ycoeff_;
5158 return *this;
5159 }
5160
5161 operator const VkViewportWScalingNV&() const
5162 {
5163 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5164 }
5165
5166 bool operator==( ViewportWScalingNV const& rhs ) const
5167 {
5168 return ( xcoeff == rhs.xcoeff )
5169 && ( ycoeff == rhs.ycoeff );
5170 }
5171
5172 bool operator!=( ViewportWScalingNV const& rhs ) const
5173 {
5174 return !operator==( rhs );
5175 }
5176
5177 float xcoeff;
5178 float ycoeff;
5179 };
5180 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5181
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005182 enum class ImageLayout
5183 {
5184 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5185 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5186 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5187 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5188 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5189 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5190 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5191 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5192 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
5193 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
5194 };
5195
5196 struct DescriptorImageInfo
5197 {
5198 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5199 : sampler( sampler_ )
5200 , imageView( imageView_ )
5201 , imageLayout( imageLayout_ )
5202 {
5203 }
5204
5205 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5206 {
5207 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5208 }
5209
5210 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5211 {
5212 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5213 return *this;
5214 }
5215
5216 DescriptorImageInfo& setSampler( Sampler sampler_ )
5217 {
5218 sampler = sampler_;
5219 return *this;
5220 }
5221
5222 DescriptorImageInfo& setImageView( ImageView imageView_ )
5223 {
5224 imageView = imageView_;
5225 return *this;
5226 }
5227
5228 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5229 {
5230 imageLayout = imageLayout_;
5231 return *this;
5232 }
5233
5234 operator const VkDescriptorImageInfo&() const
5235 {
5236 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5237 }
5238
5239 bool operator==( DescriptorImageInfo const& rhs ) const
5240 {
5241 return ( sampler == rhs.sampler )
5242 && ( imageView == rhs.imageView )
5243 && ( imageLayout == rhs.imageLayout );
5244 }
5245
5246 bool operator!=( DescriptorImageInfo const& rhs ) const
5247 {
5248 return !operator==( rhs );
5249 }
5250
5251 Sampler sampler;
5252 ImageView imageView;
5253 ImageLayout imageLayout;
5254 };
5255 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5256
5257 struct AttachmentReference
5258 {
5259 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5260 : attachment( attachment_ )
5261 , layout( layout_ )
5262 {
5263 }
5264
5265 AttachmentReference( VkAttachmentReference const & rhs )
5266 {
5267 memcpy( this, &rhs, sizeof(AttachmentReference) );
5268 }
5269
5270 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5271 {
5272 memcpy( this, &rhs, sizeof(AttachmentReference) );
5273 return *this;
5274 }
5275
5276 AttachmentReference& setAttachment( uint32_t attachment_ )
5277 {
5278 attachment = attachment_;
5279 return *this;
5280 }
5281
5282 AttachmentReference& setLayout( ImageLayout layout_ )
5283 {
5284 layout = layout_;
5285 return *this;
5286 }
5287
5288 operator const VkAttachmentReference&() const
5289 {
5290 return *reinterpret_cast<const VkAttachmentReference*>(this);
5291 }
5292
5293 bool operator==( AttachmentReference const& rhs ) const
5294 {
5295 return ( attachment == rhs.attachment )
5296 && ( layout == rhs.layout );
5297 }
5298
5299 bool operator!=( AttachmentReference const& rhs ) const
5300 {
5301 return !operator==( rhs );
5302 }
5303
5304 uint32_t attachment;
5305 ImageLayout layout;
5306 };
5307 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5308
5309 enum class AttachmentLoadOp
5310 {
5311 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5312 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5313 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5314 };
5315
5316 enum class AttachmentStoreOp
5317 {
5318 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5319 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5320 };
5321
5322 enum class ImageType
5323 {
5324 e1D = VK_IMAGE_TYPE_1D,
5325 e2D = VK_IMAGE_TYPE_2D,
5326 e3D = VK_IMAGE_TYPE_3D
5327 };
5328
5329 enum class ImageTiling
5330 {
5331 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5332 eLinear = VK_IMAGE_TILING_LINEAR
5333 };
5334
5335 enum class ImageViewType
5336 {
5337 e1D = VK_IMAGE_VIEW_TYPE_1D,
5338 e2D = VK_IMAGE_VIEW_TYPE_2D,
5339 e3D = VK_IMAGE_VIEW_TYPE_3D,
5340 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5341 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5342 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5343 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5344 };
5345
5346 enum class CommandBufferLevel
5347 {
5348 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5349 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5350 };
5351
5352 enum class ComponentSwizzle
5353 {
5354 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5355 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5356 eOne = VK_COMPONENT_SWIZZLE_ONE,
5357 eR = VK_COMPONENT_SWIZZLE_R,
5358 eG = VK_COMPONENT_SWIZZLE_G,
5359 eB = VK_COMPONENT_SWIZZLE_B,
5360 eA = VK_COMPONENT_SWIZZLE_A
5361 };
5362
5363 struct ComponentMapping
5364 {
5365 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5366 : r( r_ )
5367 , g( g_ )
5368 , b( b_ )
5369 , a( a_ )
5370 {
5371 }
5372
5373 ComponentMapping( VkComponentMapping const & rhs )
5374 {
5375 memcpy( this, &rhs, sizeof(ComponentMapping) );
5376 }
5377
5378 ComponentMapping& operator=( VkComponentMapping const & rhs )
5379 {
5380 memcpy( this, &rhs, sizeof(ComponentMapping) );
5381 return *this;
5382 }
5383
5384 ComponentMapping& setR( ComponentSwizzle r_ )
5385 {
5386 r = r_;
5387 return *this;
5388 }
5389
5390 ComponentMapping& setG( ComponentSwizzle g_ )
5391 {
5392 g = g_;
5393 return *this;
5394 }
5395
5396 ComponentMapping& setB( ComponentSwizzle b_ )
5397 {
5398 b = b_;
5399 return *this;
5400 }
5401
5402 ComponentMapping& setA( ComponentSwizzle a_ )
5403 {
5404 a = a_;
5405 return *this;
5406 }
5407
5408 operator const VkComponentMapping&() const
5409 {
5410 return *reinterpret_cast<const VkComponentMapping*>(this);
5411 }
5412
5413 bool operator==( ComponentMapping const& rhs ) const
5414 {
5415 return ( r == rhs.r )
5416 && ( g == rhs.g )
5417 && ( b == rhs.b )
5418 && ( a == rhs.a );
5419 }
5420
5421 bool operator!=( ComponentMapping const& rhs ) const
5422 {
5423 return !operator==( rhs );
5424 }
5425
5426 ComponentSwizzle r;
5427 ComponentSwizzle g;
5428 ComponentSwizzle b;
5429 ComponentSwizzle a;
5430 };
5431 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5432
5433 enum class DescriptorType
5434 {
5435 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5436 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5437 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5438 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5439 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5440 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5441 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5442 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5443 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5444 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5445 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5446 };
5447
5448 struct DescriptorPoolSize
5449 {
5450 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5451 : type( type_ )
5452 , descriptorCount( descriptorCount_ )
5453 {
5454 }
5455
5456 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5457 {
5458 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5459 }
5460
5461 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5462 {
5463 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5464 return *this;
5465 }
5466
5467 DescriptorPoolSize& setType( DescriptorType type_ )
5468 {
5469 type = type_;
5470 return *this;
5471 }
5472
5473 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5474 {
5475 descriptorCount = descriptorCount_;
5476 return *this;
5477 }
5478
5479 operator const VkDescriptorPoolSize&() const
5480 {
5481 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5482 }
5483
5484 bool operator==( DescriptorPoolSize const& rhs ) const
5485 {
5486 return ( type == rhs.type )
5487 && ( descriptorCount == rhs.descriptorCount );
5488 }
5489
5490 bool operator!=( DescriptorPoolSize const& rhs ) const
5491 {
5492 return !operator==( rhs );
5493 }
5494
5495 DescriptorType type;
5496 uint32_t descriptorCount;
5497 };
5498 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5499
Mark Young0f183a82017-02-28 09:58:04 -07005500 struct DescriptorUpdateTemplateEntryKHR
5501 {
5502 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 )
5503 : dstBinding( dstBinding_ )
5504 , dstArrayElement( dstArrayElement_ )
5505 , descriptorCount( descriptorCount_ )
5506 , descriptorType( descriptorType_ )
5507 , offset( offset_ )
5508 , stride( stride_ )
5509 {
5510 }
5511
5512 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5513 {
5514 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5515 }
5516
5517 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5518 {
5519 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5520 return *this;
5521 }
5522
5523 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5524 {
5525 dstBinding = dstBinding_;
5526 return *this;
5527 }
5528
5529 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5530 {
5531 dstArrayElement = dstArrayElement_;
5532 return *this;
5533 }
5534
5535 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5536 {
5537 descriptorCount = descriptorCount_;
5538 return *this;
5539 }
5540
5541 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5542 {
5543 descriptorType = descriptorType_;
5544 return *this;
5545 }
5546
5547 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5548 {
5549 offset = offset_;
5550 return *this;
5551 }
5552
5553 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5554 {
5555 stride = stride_;
5556 return *this;
5557 }
5558
5559 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5560 {
5561 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5562 }
5563
5564 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5565 {
5566 return ( dstBinding == rhs.dstBinding )
5567 && ( dstArrayElement == rhs.dstArrayElement )
5568 && ( descriptorCount == rhs.descriptorCount )
5569 && ( descriptorType == rhs.descriptorType )
5570 && ( offset == rhs.offset )
5571 && ( stride == rhs.stride );
5572 }
5573
5574 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5575 {
5576 return !operator==( rhs );
5577 }
5578
5579 uint32_t dstBinding;
5580 uint32_t dstArrayElement;
5581 uint32_t descriptorCount;
5582 DescriptorType descriptorType;
5583 size_t offset;
5584 size_t stride;
5585 };
5586 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5587
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005588 enum class QueryType
5589 {
5590 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5591 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5592 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5593 };
5594
5595 enum class BorderColor
5596 {
5597 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5598 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5599 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5600 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5601 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5602 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5603 };
5604
5605 enum class PipelineBindPoint
5606 {
5607 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5608 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5609 };
5610
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005611 enum class PipelineCacheHeaderVersion
5612 {
5613 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5614 };
5615
5616 enum class PrimitiveTopology
5617 {
5618 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5619 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5620 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5621 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5622 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5623 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5624 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5625 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5626 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5627 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5628 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5629 };
5630
5631 enum class SharingMode
5632 {
5633 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5634 eConcurrent = VK_SHARING_MODE_CONCURRENT
5635 };
5636
5637 enum class IndexType
5638 {
5639 eUint16 = VK_INDEX_TYPE_UINT16,
5640 eUint32 = VK_INDEX_TYPE_UINT32
5641 };
5642
5643 enum class Filter
5644 {
5645 eNearest = VK_FILTER_NEAREST,
5646 eLinear = VK_FILTER_LINEAR,
5647 eCubicIMG = VK_FILTER_CUBIC_IMG
5648 };
5649
5650 enum class SamplerMipmapMode
5651 {
5652 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5653 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5654 };
5655
5656 enum class SamplerAddressMode
5657 {
5658 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5659 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5660 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5661 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5662 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5663 };
5664
5665 enum class CompareOp
5666 {
5667 eNever = VK_COMPARE_OP_NEVER,
5668 eLess = VK_COMPARE_OP_LESS,
5669 eEqual = VK_COMPARE_OP_EQUAL,
5670 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5671 eGreater = VK_COMPARE_OP_GREATER,
5672 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5673 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5674 eAlways = VK_COMPARE_OP_ALWAYS
5675 };
5676
5677 enum class PolygonMode
5678 {
5679 eFill = VK_POLYGON_MODE_FILL,
5680 eLine = VK_POLYGON_MODE_LINE,
5681 ePoint = VK_POLYGON_MODE_POINT
5682 };
5683
5684 enum class CullModeFlagBits
5685 {
5686 eNone = VK_CULL_MODE_NONE,
5687 eFront = VK_CULL_MODE_FRONT_BIT,
5688 eBack = VK_CULL_MODE_BACK_BIT,
5689 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5690 };
5691
5692 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5693
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005694 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005695 {
5696 return CullModeFlags( bit0 ) | bit1;
5697 }
5698
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005699 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5700 {
5701 return ~( CullModeFlags( bits ) );
5702 }
5703
5704 template <> struct FlagTraits<CullModeFlagBits>
5705 {
5706 enum
5707 {
5708 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5709 };
5710 };
5711
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005712 enum class FrontFace
5713 {
5714 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5715 eClockwise = VK_FRONT_FACE_CLOCKWISE
5716 };
5717
5718 enum class BlendFactor
5719 {
5720 eZero = VK_BLEND_FACTOR_ZERO,
5721 eOne = VK_BLEND_FACTOR_ONE,
5722 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5723 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5724 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5725 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5726 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5727 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5728 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5729 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5730 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5731 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5732 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5733 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5734 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5735 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5736 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5737 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5738 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5739 };
5740
5741 enum class BlendOp
5742 {
5743 eAdd = VK_BLEND_OP_ADD,
5744 eSubtract = VK_BLEND_OP_SUBTRACT,
5745 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5746 eMin = VK_BLEND_OP_MIN,
5747 eMax = VK_BLEND_OP_MAX
5748 };
5749
5750 enum class StencilOp
5751 {
5752 eKeep = VK_STENCIL_OP_KEEP,
5753 eZero = VK_STENCIL_OP_ZERO,
5754 eReplace = VK_STENCIL_OP_REPLACE,
5755 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5756 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5757 eInvert = VK_STENCIL_OP_INVERT,
5758 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5759 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5760 };
5761
5762 struct StencilOpState
5763 {
5764 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 )
5765 : failOp( failOp_ )
5766 , passOp( passOp_ )
5767 , depthFailOp( depthFailOp_ )
5768 , compareOp( compareOp_ )
5769 , compareMask( compareMask_ )
5770 , writeMask( writeMask_ )
5771 , reference( reference_ )
5772 {
5773 }
5774
5775 StencilOpState( VkStencilOpState const & rhs )
5776 {
5777 memcpy( this, &rhs, sizeof(StencilOpState) );
5778 }
5779
5780 StencilOpState& operator=( VkStencilOpState const & rhs )
5781 {
5782 memcpy( this, &rhs, sizeof(StencilOpState) );
5783 return *this;
5784 }
5785
5786 StencilOpState& setFailOp( StencilOp failOp_ )
5787 {
5788 failOp = failOp_;
5789 return *this;
5790 }
5791
5792 StencilOpState& setPassOp( StencilOp passOp_ )
5793 {
5794 passOp = passOp_;
5795 return *this;
5796 }
5797
5798 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5799 {
5800 depthFailOp = depthFailOp_;
5801 return *this;
5802 }
5803
5804 StencilOpState& setCompareOp( CompareOp compareOp_ )
5805 {
5806 compareOp = compareOp_;
5807 return *this;
5808 }
5809
5810 StencilOpState& setCompareMask( uint32_t compareMask_ )
5811 {
5812 compareMask = compareMask_;
5813 return *this;
5814 }
5815
5816 StencilOpState& setWriteMask( uint32_t writeMask_ )
5817 {
5818 writeMask = writeMask_;
5819 return *this;
5820 }
5821
5822 StencilOpState& setReference( uint32_t reference_ )
5823 {
5824 reference = reference_;
5825 return *this;
5826 }
5827
5828 operator const VkStencilOpState&() const
5829 {
5830 return *reinterpret_cast<const VkStencilOpState*>(this);
5831 }
5832
5833 bool operator==( StencilOpState const& rhs ) const
5834 {
5835 return ( failOp == rhs.failOp )
5836 && ( passOp == rhs.passOp )
5837 && ( depthFailOp == rhs.depthFailOp )
5838 && ( compareOp == rhs.compareOp )
5839 && ( compareMask == rhs.compareMask )
5840 && ( writeMask == rhs.writeMask )
5841 && ( reference == rhs.reference );
5842 }
5843
5844 bool operator!=( StencilOpState const& rhs ) const
5845 {
5846 return !operator==( rhs );
5847 }
5848
5849 StencilOp failOp;
5850 StencilOp passOp;
5851 StencilOp depthFailOp;
5852 CompareOp compareOp;
5853 uint32_t compareMask;
5854 uint32_t writeMask;
5855 uint32_t reference;
5856 };
5857 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5858
5859 enum class LogicOp
5860 {
5861 eClear = VK_LOGIC_OP_CLEAR,
5862 eAnd = VK_LOGIC_OP_AND,
5863 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
5864 eCopy = VK_LOGIC_OP_COPY,
5865 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
5866 eNoOp = VK_LOGIC_OP_NO_OP,
5867 eXor = VK_LOGIC_OP_XOR,
5868 eOr = VK_LOGIC_OP_OR,
5869 eNor = VK_LOGIC_OP_NOR,
5870 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
5871 eInvert = VK_LOGIC_OP_INVERT,
5872 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
5873 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
5874 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
5875 eNand = VK_LOGIC_OP_NAND,
5876 eSet = VK_LOGIC_OP_SET
5877 };
5878
5879 enum class InternalAllocationType
5880 {
5881 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
5882 };
5883
5884 enum class SystemAllocationScope
5885 {
5886 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
5887 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
5888 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
5889 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
5890 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
5891 };
5892
5893 enum class PhysicalDeviceType
5894 {
5895 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
5896 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
5897 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
5898 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
5899 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
5900 };
5901
5902 enum class VertexInputRate
5903 {
5904 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
5905 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
5906 };
5907
5908 struct VertexInputBindingDescription
5909 {
5910 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
5911 : binding( binding_ )
5912 , stride( stride_ )
5913 , inputRate( inputRate_ )
5914 {
5915 }
5916
5917 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
5918 {
5919 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5920 }
5921
5922 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
5923 {
5924 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5925 return *this;
5926 }
5927
5928 VertexInputBindingDescription& setBinding( uint32_t binding_ )
5929 {
5930 binding = binding_;
5931 return *this;
5932 }
5933
5934 VertexInputBindingDescription& setStride( uint32_t stride_ )
5935 {
5936 stride = stride_;
5937 return *this;
5938 }
5939
5940 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
5941 {
5942 inputRate = inputRate_;
5943 return *this;
5944 }
5945
5946 operator const VkVertexInputBindingDescription&() const
5947 {
5948 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
5949 }
5950
5951 bool operator==( VertexInputBindingDescription const& rhs ) const
5952 {
5953 return ( binding == rhs.binding )
5954 && ( stride == rhs.stride )
5955 && ( inputRate == rhs.inputRate );
5956 }
5957
5958 bool operator!=( VertexInputBindingDescription const& rhs ) const
5959 {
5960 return !operator==( rhs );
5961 }
5962
5963 uint32_t binding;
5964 uint32_t stride;
5965 VertexInputRate inputRate;
5966 };
5967 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
5968
5969 enum class Format
5970 {
5971 eUndefined = VK_FORMAT_UNDEFINED,
5972 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
5973 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
5974 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
5975 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
5976 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
5977 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
5978 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
5979 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
5980 eR8Unorm = VK_FORMAT_R8_UNORM,
5981 eR8Snorm = VK_FORMAT_R8_SNORM,
5982 eR8Uscaled = VK_FORMAT_R8_USCALED,
5983 eR8Sscaled = VK_FORMAT_R8_SSCALED,
5984 eR8Uint = VK_FORMAT_R8_UINT,
5985 eR8Sint = VK_FORMAT_R8_SINT,
5986 eR8Srgb = VK_FORMAT_R8_SRGB,
5987 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
5988 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
5989 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
5990 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
5991 eR8G8Uint = VK_FORMAT_R8G8_UINT,
5992 eR8G8Sint = VK_FORMAT_R8G8_SINT,
5993 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
5994 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
5995 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
5996 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
5997 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
5998 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
5999 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6000 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6001 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6002 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6003 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6004 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6005 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6006 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6007 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6008 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6009 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6010 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6011 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6012 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6013 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6014 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6015 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6016 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6017 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6018 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6019 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6020 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6021 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6022 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6023 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6024 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6025 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6026 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6027 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6028 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6029 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6030 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6031 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6032 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6033 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6034 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6035 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6036 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6037 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6038 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6039 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6040 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6041 eR16Unorm = VK_FORMAT_R16_UNORM,
6042 eR16Snorm = VK_FORMAT_R16_SNORM,
6043 eR16Uscaled = VK_FORMAT_R16_USCALED,
6044 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6045 eR16Uint = VK_FORMAT_R16_UINT,
6046 eR16Sint = VK_FORMAT_R16_SINT,
6047 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6048 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6049 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6050 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6051 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6052 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6053 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6054 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6055 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6056 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6057 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6058 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6059 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6060 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6061 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6062 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6063 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6064 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6065 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6066 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6067 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6068 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6069 eR32Uint = VK_FORMAT_R32_UINT,
6070 eR32Sint = VK_FORMAT_R32_SINT,
6071 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6072 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6073 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6074 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6075 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6076 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6077 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6078 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6079 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6080 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6081 eR64Uint = VK_FORMAT_R64_UINT,
6082 eR64Sint = VK_FORMAT_R64_SINT,
6083 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6084 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6085 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6086 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6087 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6088 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6089 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6090 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6091 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6092 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6093 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6094 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6095 eD16Unorm = VK_FORMAT_D16_UNORM,
6096 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6097 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6098 eS8Uint = VK_FORMAT_S8_UINT,
6099 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6100 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6101 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6102 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6103 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6104 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6105 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6106 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6107 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6108 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6109 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6110 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6111 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6112 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6113 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6114 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6115 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6116 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6117 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6118 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6119 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6120 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6121 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6122 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6123 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6124 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6125 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6126 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6127 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6128 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6129 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6130 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6131 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6132 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6133 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6134 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6135 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6136 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6137 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6138 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6139 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6140 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6141 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6142 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6143 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6144 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6145 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6146 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6147 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6148 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6149 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6150 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6151 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6152 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6153 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6154 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006155 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6156 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6157 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6158 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6159 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6160 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6161 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6162 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6163 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006164 };
6165
6166 struct VertexInputAttributeDescription
6167 {
6168 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6169 : location( location_ )
6170 , binding( binding_ )
6171 , format( format_ )
6172 , offset( offset_ )
6173 {
6174 }
6175
6176 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6177 {
6178 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6179 }
6180
6181 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6182 {
6183 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6184 return *this;
6185 }
6186
6187 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6188 {
6189 location = location_;
6190 return *this;
6191 }
6192
6193 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6194 {
6195 binding = binding_;
6196 return *this;
6197 }
6198
6199 VertexInputAttributeDescription& setFormat( Format format_ )
6200 {
6201 format = format_;
6202 return *this;
6203 }
6204
6205 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6206 {
6207 offset = offset_;
6208 return *this;
6209 }
6210
6211 operator const VkVertexInputAttributeDescription&() const
6212 {
6213 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6214 }
6215
6216 bool operator==( VertexInputAttributeDescription const& rhs ) const
6217 {
6218 return ( location == rhs.location )
6219 && ( binding == rhs.binding )
6220 && ( format == rhs.format )
6221 && ( offset == rhs.offset );
6222 }
6223
6224 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6225 {
6226 return !operator==( rhs );
6227 }
6228
6229 uint32_t location;
6230 uint32_t binding;
6231 Format format;
6232 uint32_t offset;
6233 };
6234 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6235
6236 enum class StructureType
6237 {
6238 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6239 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6240 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6241 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6242 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6243 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6244 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6245 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6246 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6247 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6248 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6249 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6250 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6251 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6252 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6253 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6254 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6255 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6256 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6257 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6258 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6259 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6260 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6261 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6262 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6263 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6264 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6265 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6266 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6267 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6268 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6269 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6270 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6271 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6272 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6273 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6274 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6275 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6276 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6277 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6278 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6279 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6280 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6281 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6282 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6283 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6284 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6285 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6286 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6287 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6288 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6289 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6290 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6291 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6292 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6293 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6294 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6295 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6296 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6297 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6298 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6299 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6300 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6301 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6302 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6303 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6304 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006305 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Young0f183a82017-02-28 09:58:04 -07006306 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6307 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6308 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006309 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6310 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6311 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6312 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006313 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006314 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6315 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6316 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6317 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6318 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6319 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6320 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6321 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6322 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006323 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6324 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6325 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6326 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6327 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6328 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6329 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6330 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6331 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6332 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6333 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6334 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6335 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006336 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006337 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006338 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6339 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
6340 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6341 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6342 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6343 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6344 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006345 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6346 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6347 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6348 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6349 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6350 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6351 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6352 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6353 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6354 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6355 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6356 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6357 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6358 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6359 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6360 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6361 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006362 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006363 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006364 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6365 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6366 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6367 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6368 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006369 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006370 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006371 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6372 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6373 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6374 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006375 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006376 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006377 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6378 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6379 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6380 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006381 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006382 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6383 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006384 };
6385
6386 struct ApplicationInfo
6387 {
6388 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6389 : sType( StructureType::eApplicationInfo )
6390 , pNext( nullptr )
6391 , pApplicationName( pApplicationName_ )
6392 , applicationVersion( applicationVersion_ )
6393 , pEngineName( pEngineName_ )
6394 , engineVersion( engineVersion_ )
6395 , apiVersion( apiVersion_ )
6396 {
6397 }
6398
6399 ApplicationInfo( VkApplicationInfo const & rhs )
6400 {
6401 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6402 }
6403
6404 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6405 {
6406 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6407 return *this;
6408 }
6409
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006410 ApplicationInfo& setPNext( const void* pNext_ )
6411 {
6412 pNext = pNext_;
6413 return *this;
6414 }
6415
6416 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6417 {
6418 pApplicationName = pApplicationName_;
6419 return *this;
6420 }
6421
6422 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6423 {
6424 applicationVersion = applicationVersion_;
6425 return *this;
6426 }
6427
6428 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6429 {
6430 pEngineName = pEngineName_;
6431 return *this;
6432 }
6433
6434 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6435 {
6436 engineVersion = engineVersion_;
6437 return *this;
6438 }
6439
6440 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6441 {
6442 apiVersion = apiVersion_;
6443 return *this;
6444 }
6445
6446 operator const VkApplicationInfo&() const
6447 {
6448 return *reinterpret_cast<const VkApplicationInfo*>(this);
6449 }
6450
6451 bool operator==( ApplicationInfo const& rhs ) const
6452 {
6453 return ( sType == rhs.sType )
6454 && ( pNext == rhs.pNext )
6455 && ( pApplicationName == rhs.pApplicationName )
6456 && ( applicationVersion == rhs.applicationVersion )
6457 && ( pEngineName == rhs.pEngineName )
6458 && ( engineVersion == rhs.engineVersion )
6459 && ( apiVersion == rhs.apiVersion );
6460 }
6461
6462 bool operator!=( ApplicationInfo const& rhs ) const
6463 {
6464 return !operator==( rhs );
6465 }
6466
6467 private:
6468 StructureType sType;
6469
6470 public:
6471 const void* pNext;
6472 const char* pApplicationName;
6473 uint32_t applicationVersion;
6474 const char* pEngineName;
6475 uint32_t engineVersion;
6476 uint32_t apiVersion;
6477 };
6478 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6479
6480 struct DeviceQueueCreateInfo
6481 {
6482 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6483 : sType( StructureType::eDeviceQueueCreateInfo )
6484 , pNext( nullptr )
6485 , flags( flags_ )
6486 , queueFamilyIndex( queueFamilyIndex_ )
6487 , queueCount( queueCount_ )
6488 , pQueuePriorities( pQueuePriorities_ )
6489 {
6490 }
6491
6492 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6493 {
6494 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6495 }
6496
6497 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6498 {
6499 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6500 return *this;
6501 }
6502
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006503 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6504 {
6505 pNext = pNext_;
6506 return *this;
6507 }
6508
6509 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6510 {
6511 flags = flags_;
6512 return *this;
6513 }
6514
6515 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6516 {
6517 queueFamilyIndex = queueFamilyIndex_;
6518 return *this;
6519 }
6520
6521 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6522 {
6523 queueCount = queueCount_;
6524 return *this;
6525 }
6526
6527 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6528 {
6529 pQueuePriorities = pQueuePriorities_;
6530 return *this;
6531 }
6532
6533 operator const VkDeviceQueueCreateInfo&() const
6534 {
6535 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6536 }
6537
6538 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6539 {
6540 return ( sType == rhs.sType )
6541 && ( pNext == rhs.pNext )
6542 && ( flags == rhs.flags )
6543 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6544 && ( queueCount == rhs.queueCount )
6545 && ( pQueuePriorities == rhs.pQueuePriorities );
6546 }
6547
6548 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6549 {
6550 return !operator==( rhs );
6551 }
6552
6553 private:
6554 StructureType sType;
6555
6556 public:
6557 const void* pNext;
6558 DeviceQueueCreateFlags flags;
6559 uint32_t queueFamilyIndex;
6560 uint32_t queueCount;
6561 const float* pQueuePriorities;
6562 };
6563 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6564
6565 struct DeviceCreateInfo
6566 {
6567 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 )
6568 : sType( StructureType::eDeviceCreateInfo )
6569 , pNext( nullptr )
6570 , flags( flags_ )
6571 , queueCreateInfoCount( queueCreateInfoCount_ )
6572 , pQueueCreateInfos( pQueueCreateInfos_ )
6573 , enabledLayerCount( enabledLayerCount_ )
6574 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6575 , enabledExtensionCount( enabledExtensionCount_ )
6576 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6577 , pEnabledFeatures( pEnabledFeatures_ )
6578 {
6579 }
6580
6581 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6582 {
6583 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6584 }
6585
6586 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6587 {
6588 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6589 return *this;
6590 }
6591
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006592 DeviceCreateInfo& setPNext( const void* pNext_ )
6593 {
6594 pNext = pNext_;
6595 return *this;
6596 }
6597
6598 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6599 {
6600 flags = flags_;
6601 return *this;
6602 }
6603
6604 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6605 {
6606 queueCreateInfoCount = queueCreateInfoCount_;
6607 return *this;
6608 }
6609
6610 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6611 {
6612 pQueueCreateInfos = pQueueCreateInfos_;
6613 return *this;
6614 }
6615
6616 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6617 {
6618 enabledLayerCount = enabledLayerCount_;
6619 return *this;
6620 }
6621
6622 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6623 {
6624 ppEnabledLayerNames = ppEnabledLayerNames_;
6625 return *this;
6626 }
6627
6628 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6629 {
6630 enabledExtensionCount = enabledExtensionCount_;
6631 return *this;
6632 }
6633
6634 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6635 {
6636 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6637 return *this;
6638 }
6639
6640 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6641 {
6642 pEnabledFeatures = pEnabledFeatures_;
6643 return *this;
6644 }
6645
6646 operator const VkDeviceCreateInfo&() const
6647 {
6648 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6649 }
6650
6651 bool operator==( DeviceCreateInfo const& rhs ) const
6652 {
6653 return ( sType == rhs.sType )
6654 && ( pNext == rhs.pNext )
6655 && ( flags == rhs.flags )
6656 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6657 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6658 && ( enabledLayerCount == rhs.enabledLayerCount )
6659 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6660 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6661 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6662 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6663 }
6664
6665 bool operator!=( DeviceCreateInfo const& rhs ) const
6666 {
6667 return !operator==( rhs );
6668 }
6669
6670 private:
6671 StructureType sType;
6672
6673 public:
6674 const void* pNext;
6675 DeviceCreateFlags flags;
6676 uint32_t queueCreateInfoCount;
6677 const DeviceQueueCreateInfo* pQueueCreateInfos;
6678 uint32_t enabledLayerCount;
6679 const char* const* ppEnabledLayerNames;
6680 uint32_t enabledExtensionCount;
6681 const char* const* ppEnabledExtensionNames;
6682 const PhysicalDeviceFeatures* pEnabledFeatures;
6683 };
6684 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6685
6686 struct InstanceCreateInfo
6687 {
6688 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 )
6689 : sType( StructureType::eInstanceCreateInfo )
6690 , pNext( nullptr )
6691 , flags( flags_ )
6692 , pApplicationInfo( pApplicationInfo_ )
6693 , enabledLayerCount( enabledLayerCount_ )
6694 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6695 , enabledExtensionCount( enabledExtensionCount_ )
6696 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6697 {
6698 }
6699
6700 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6701 {
6702 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6703 }
6704
6705 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6706 {
6707 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6708 return *this;
6709 }
6710
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006711 InstanceCreateInfo& setPNext( const void* pNext_ )
6712 {
6713 pNext = pNext_;
6714 return *this;
6715 }
6716
6717 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6718 {
6719 flags = flags_;
6720 return *this;
6721 }
6722
6723 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6724 {
6725 pApplicationInfo = pApplicationInfo_;
6726 return *this;
6727 }
6728
6729 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6730 {
6731 enabledLayerCount = enabledLayerCount_;
6732 return *this;
6733 }
6734
6735 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6736 {
6737 ppEnabledLayerNames = ppEnabledLayerNames_;
6738 return *this;
6739 }
6740
6741 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6742 {
6743 enabledExtensionCount = enabledExtensionCount_;
6744 return *this;
6745 }
6746
6747 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6748 {
6749 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6750 return *this;
6751 }
6752
6753 operator const VkInstanceCreateInfo&() const
6754 {
6755 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6756 }
6757
6758 bool operator==( InstanceCreateInfo const& rhs ) const
6759 {
6760 return ( sType == rhs.sType )
6761 && ( pNext == rhs.pNext )
6762 && ( flags == rhs.flags )
6763 && ( pApplicationInfo == rhs.pApplicationInfo )
6764 && ( enabledLayerCount == rhs.enabledLayerCount )
6765 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6766 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6767 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6768 }
6769
6770 bool operator!=( InstanceCreateInfo const& rhs ) const
6771 {
6772 return !operator==( rhs );
6773 }
6774
6775 private:
6776 StructureType sType;
6777
6778 public:
6779 const void* pNext;
6780 InstanceCreateFlags flags;
6781 const ApplicationInfo* pApplicationInfo;
6782 uint32_t enabledLayerCount;
6783 const char* const* ppEnabledLayerNames;
6784 uint32_t enabledExtensionCount;
6785 const char* const* ppEnabledExtensionNames;
6786 };
6787 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6788
6789 struct MemoryAllocateInfo
6790 {
6791 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6792 : sType( StructureType::eMemoryAllocateInfo )
6793 , pNext( nullptr )
6794 , allocationSize( allocationSize_ )
6795 , memoryTypeIndex( memoryTypeIndex_ )
6796 {
6797 }
6798
6799 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6800 {
6801 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6802 }
6803
6804 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6805 {
6806 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6807 return *this;
6808 }
6809
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006810 MemoryAllocateInfo& setPNext( const void* pNext_ )
6811 {
6812 pNext = pNext_;
6813 return *this;
6814 }
6815
6816 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6817 {
6818 allocationSize = allocationSize_;
6819 return *this;
6820 }
6821
6822 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6823 {
6824 memoryTypeIndex = memoryTypeIndex_;
6825 return *this;
6826 }
6827
6828 operator const VkMemoryAllocateInfo&() const
6829 {
6830 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6831 }
6832
6833 bool operator==( MemoryAllocateInfo const& rhs ) const
6834 {
6835 return ( sType == rhs.sType )
6836 && ( pNext == rhs.pNext )
6837 && ( allocationSize == rhs.allocationSize )
6838 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6839 }
6840
6841 bool operator!=( MemoryAllocateInfo const& rhs ) const
6842 {
6843 return !operator==( rhs );
6844 }
6845
6846 private:
6847 StructureType sType;
6848
6849 public:
6850 const void* pNext;
6851 DeviceSize allocationSize;
6852 uint32_t memoryTypeIndex;
6853 };
6854 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6855
6856 struct MappedMemoryRange
6857 {
6858 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6859 : sType( StructureType::eMappedMemoryRange )
6860 , pNext( nullptr )
6861 , memory( memory_ )
6862 , offset( offset_ )
6863 , size( size_ )
6864 {
6865 }
6866
6867 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6868 {
6869 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6870 }
6871
6872 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6873 {
6874 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6875 return *this;
6876 }
6877
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006878 MappedMemoryRange& setPNext( const void* pNext_ )
6879 {
6880 pNext = pNext_;
6881 return *this;
6882 }
6883
6884 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6885 {
6886 memory = memory_;
6887 return *this;
6888 }
6889
6890 MappedMemoryRange& setOffset( DeviceSize offset_ )
6891 {
6892 offset = offset_;
6893 return *this;
6894 }
6895
6896 MappedMemoryRange& setSize( DeviceSize size_ )
6897 {
6898 size = size_;
6899 return *this;
6900 }
6901
6902 operator const VkMappedMemoryRange&() const
6903 {
6904 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6905 }
6906
6907 bool operator==( MappedMemoryRange const& rhs ) const
6908 {
6909 return ( sType == rhs.sType )
6910 && ( pNext == rhs.pNext )
6911 && ( memory == rhs.memory )
6912 && ( offset == rhs.offset )
6913 && ( size == rhs.size );
6914 }
6915
6916 bool operator!=( MappedMemoryRange const& rhs ) const
6917 {
6918 return !operator==( rhs );
6919 }
6920
6921 private:
6922 StructureType sType;
6923
6924 public:
6925 const void* pNext;
6926 DeviceMemory memory;
6927 DeviceSize offset;
6928 DeviceSize size;
6929 };
6930 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
6931
6932 struct WriteDescriptorSet
6933 {
6934 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 )
6935 : sType( StructureType::eWriteDescriptorSet )
6936 , pNext( nullptr )
6937 , dstSet( dstSet_ )
6938 , dstBinding( dstBinding_ )
6939 , dstArrayElement( dstArrayElement_ )
6940 , descriptorCount( descriptorCount_ )
6941 , descriptorType( descriptorType_ )
6942 , pImageInfo( pImageInfo_ )
6943 , pBufferInfo( pBufferInfo_ )
6944 , pTexelBufferView( pTexelBufferView_ )
6945 {
6946 }
6947
6948 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
6949 {
6950 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6951 }
6952
6953 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
6954 {
6955 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6956 return *this;
6957 }
6958
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006959 WriteDescriptorSet& setPNext( const void* pNext_ )
6960 {
6961 pNext = pNext_;
6962 return *this;
6963 }
6964
6965 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6966 {
6967 dstSet = dstSet_;
6968 return *this;
6969 }
6970
6971 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6972 {
6973 dstBinding = dstBinding_;
6974 return *this;
6975 }
6976
6977 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
6978 {
6979 dstArrayElement = dstArrayElement_;
6980 return *this;
6981 }
6982
6983 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
6984 {
6985 descriptorCount = descriptorCount_;
6986 return *this;
6987 }
6988
6989 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
6990 {
6991 descriptorType = descriptorType_;
6992 return *this;
6993 }
6994
6995 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
6996 {
6997 pImageInfo = pImageInfo_;
6998 return *this;
6999 }
7000
7001 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7002 {
7003 pBufferInfo = pBufferInfo_;
7004 return *this;
7005 }
7006
7007 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7008 {
7009 pTexelBufferView = pTexelBufferView_;
7010 return *this;
7011 }
7012
7013 operator const VkWriteDescriptorSet&() const
7014 {
7015 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7016 }
7017
7018 bool operator==( WriteDescriptorSet const& rhs ) const
7019 {
7020 return ( sType == rhs.sType )
7021 && ( pNext == rhs.pNext )
7022 && ( dstSet == rhs.dstSet )
7023 && ( dstBinding == rhs.dstBinding )
7024 && ( dstArrayElement == rhs.dstArrayElement )
7025 && ( descriptorCount == rhs.descriptorCount )
7026 && ( descriptorType == rhs.descriptorType )
7027 && ( pImageInfo == rhs.pImageInfo )
7028 && ( pBufferInfo == rhs.pBufferInfo )
7029 && ( pTexelBufferView == rhs.pTexelBufferView );
7030 }
7031
7032 bool operator!=( WriteDescriptorSet const& rhs ) const
7033 {
7034 return !operator==( rhs );
7035 }
7036
7037 private:
7038 StructureType sType;
7039
7040 public:
7041 const void* pNext;
7042 DescriptorSet dstSet;
7043 uint32_t dstBinding;
7044 uint32_t dstArrayElement;
7045 uint32_t descriptorCount;
7046 DescriptorType descriptorType;
7047 const DescriptorImageInfo* pImageInfo;
7048 const DescriptorBufferInfo* pBufferInfo;
7049 const BufferView* pTexelBufferView;
7050 };
7051 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7052
7053 struct CopyDescriptorSet
7054 {
7055 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 )
7056 : sType( StructureType::eCopyDescriptorSet )
7057 , pNext( nullptr )
7058 , srcSet( srcSet_ )
7059 , srcBinding( srcBinding_ )
7060 , srcArrayElement( srcArrayElement_ )
7061 , dstSet( dstSet_ )
7062 , dstBinding( dstBinding_ )
7063 , dstArrayElement( dstArrayElement_ )
7064 , descriptorCount( descriptorCount_ )
7065 {
7066 }
7067
7068 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7069 {
7070 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
7071 }
7072
7073 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7074 {
7075 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
7076 return *this;
7077 }
7078
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007079 CopyDescriptorSet& setPNext( const void* pNext_ )
7080 {
7081 pNext = pNext_;
7082 return *this;
7083 }
7084
7085 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7086 {
7087 srcSet = srcSet_;
7088 return *this;
7089 }
7090
7091 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7092 {
7093 srcBinding = srcBinding_;
7094 return *this;
7095 }
7096
7097 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7098 {
7099 srcArrayElement = srcArrayElement_;
7100 return *this;
7101 }
7102
7103 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7104 {
7105 dstSet = dstSet_;
7106 return *this;
7107 }
7108
7109 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7110 {
7111 dstBinding = dstBinding_;
7112 return *this;
7113 }
7114
7115 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7116 {
7117 dstArrayElement = dstArrayElement_;
7118 return *this;
7119 }
7120
7121 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7122 {
7123 descriptorCount = descriptorCount_;
7124 return *this;
7125 }
7126
7127 operator const VkCopyDescriptorSet&() const
7128 {
7129 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7130 }
7131
7132 bool operator==( CopyDescriptorSet const& rhs ) const
7133 {
7134 return ( sType == rhs.sType )
7135 && ( pNext == rhs.pNext )
7136 && ( srcSet == rhs.srcSet )
7137 && ( srcBinding == rhs.srcBinding )
7138 && ( srcArrayElement == rhs.srcArrayElement )
7139 && ( dstSet == rhs.dstSet )
7140 && ( dstBinding == rhs.dstBinding )
7141 && ( dstArrayElement == rhs.dstArrayElement )
7142 && ( descriptorCount == rhs.descriptorCount );
7143 }
7144
7145 bool operator!=( CopyDescriptorSet const& rhs ) const
7146 {
7147 return !operator==( rhs );
7148 }
7149
7150 private:
7151 StructureType sType;
7152
7153 public:
7154 const void* pNext;
7155 DescriptorSet srcSet;
7156 uint32_t srcBinding;
7157 uint32_t srcArrayElement;
7158 DescriptorSet dstSet;
7159 uint32_t dstBinding;
7160 uint32_t dstArrayElement;
7161 uint32_t descriptorCount;
7162 };
7163 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7164
7165 struct BufferViewCreateInfo
7166 {
7167 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7168 : sType( StructureType::eBufferViewCreateInfo )
7169 , pNext( nullptr )
7170 , flags( flags_ )
7171 , buffer( buffer_ )
7172 , format( format_ )
7173 , offset( offset_ )
7174 , range( range_ )
7175 {
7176 }
7177
7178 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7179 {
7180 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7181 }
7182
7183 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7184 {
7185 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7186 return *this;
7187 }
7188
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007189 BufferViewCreateInfo& setPNext( const void* pNext_ )
7190 {
7191 pNext = pNext_;
7192 return *this;
7193 }
7194
7195 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7196 {
7197 flags = flags_;
7198 return *this;
7199 }
7200
7201 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7202 {
7203 buffer = buffer_;
7204 return *this;
7205 }
7206
7207 BufferViewCreateInfo& setFormat( Format format_ )
7208 {
7209 format = format_;
7210 return *this;
7211 }
7212
7213 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7214 {
7215 offset = offset_;
7216 return *this;
7217 }
7218
7219 BufferViewCreateInfo& setRange( DeviceSize range_ )
7220 {
7221 range = range_;
7222 return *this;
7223 }
7224
7225 operator const VkBufferViewCreateInfo&() const
7226 {
7227 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7228 }
7229
7230 bool operator==( BufferViewCreateInfo const& rhs ) const
7231 {
7232 return ( sType == rhs.sType )
7233 && ( pNext == rhs.pNext )
7234 && ( flags == rhs.flags )
7235 && ( buffer == rhs.buffer )
7236 && ( format == rhs.format )
7237 && ( offset == rhs.offset )
7238 && ( range == rhs.range );
7239 }
7240
7241 bool operator!=( BufferViewCreateInfo const& rhs ) const
7242 {
7243 return !operator==( rhs );
7244 }
7245
7246 private:
7247 StructureType sType;
7248
7249 public:
7250 const void* pNext;
7251 BufferViewCreateFlags flags;
7252 Buffer buffer;
7253 Format format;
7254 DeviceSize offset;
7255 DeviceSize range;
7256 };
7257 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7258
7259 struct ShaderModuleCreateInfo
7260 {
7261 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7262 : sType( StructureType::eShaderModuleCreateInfo )
7263 , pNext( nullptr )
7264 , flags( flags_ )
7265 , codeSize( codeSize_ )
7266 , pCode( pCode_ )
7267 {
7268 }
7269
7270 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7271 {
7272 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7273 }
7274
7275 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7276 {
7277 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7278 return *this;
7279 }
7280
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007281 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7282 {
7283 pNext = pNext_;
7284 return *this;
7285 }
7286
7287 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7288 {
7289 flags = flags_;
7290 return *this;
7291 }
7292
7293 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7294 {
7295 codeSize = codeSize_;
7296 return *this;
7297 }
7298
7299 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7300 {
7301 pCode = pCode_;
7302 return *this;
7303 }
7304
7305 operator const VkShaderModuleCreateInfo&() const
7306 {
7307 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7308 }
7309
7310 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7311 {
7312 return ( sType == rhs.sType )
7313 && ( pNext == rhs.pNext )
7314 && ( flags == rhs.flags )
7315 && ( codeSize == rhs.codeSize )
7316 && ( pCode == rhs.pCode );
7317 }
7318
7319 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7320 {
7321 return !operator==( rhs );
7322 }
7323
7324 private:
7325 StructureType sType;
7326
7327 public:
7328 const void* pNext;
7329 ShaderModuleCreateFlags flags;
7330 size_t codeSize;
7331 const uint32_t* pCode;
7332 };
7333 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7334
7335 struct DescriptorSetAllocateInfo
7336 {
7337 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7338 : sType( StructureType::eDescriptorSetAllocateInfo )
7339 , pNext( nullptr )
7340 , descriptorPool( descriptorPool_ )
7341 , descriptorSetCount( descriptorSetCount_ )
7342 , pSetLayouts( pSetLayouts_ )
7343 {
7344 }
7345
7346 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7347 {
7348 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7349 }
7350
7351 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7352 {
7353 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7354 return *this;
7355 }
7356
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007357 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7358 {
7359 pNext = pNext_;
7360 return *this;
7361 }
7362
7363 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7364 {
7365 descriptorPool = descriptorPool_;
7366 return *this;
7367 }
7368
7369 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7370 {
7371 descriptorSetCount = descriptorSetCount_;
7372 return *this;
7373 }
7374
7375 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7376 {
7377 pSetLayouts = pSetLayouts_;
7378 return *this;
7379 }
7380
7381 operator const VkDescriptorSetAllocateInfo&() const
7382 {
7383 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7384 }
7385
7386 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7387 {
7388 return ( sType == rhs.sType )
7389 && ( pNext == rhs.pNext )
7390 && ( descriptorPool == rhs.descriptorPool )
7391 && ( descriptorSetCount == rhs.descriptorSetCount )
7392 && ( pSetLayouts == rhs.pSetLayouts );
7393 }
7394
7395 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7396 {
7397 return !operator==( rhs );
7398 }
7399
7400 private:
7401 StructureType sType;
7402
7403 public:
7404 const void* pNext;
7405 DescriptorPool descriptorPool;
7406 uint32_t descriptorSetCount;
7407 const DescriptorSetLayout* pSetLayouts;
7408 };
7409 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7410
7411 struct PipelineVertexInputStateCreateInfo
7412 {
7413 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7414 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7415 , pNext( nullptr )
7416 , flags( flags_ )
7417 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7418 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7419 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7420 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7421 {
7422 }
7423
7424 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7425 {
7426 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7427 }
7428
7429 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7430 {
7431 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7432 return *this;
7433 }
7434
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007435 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7436 {
7437 pNext = pNext_;
7438 return *this;
7439 }
7440
7441 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7442 {
7443 flags = flags_;
7444 return *this;
7445 }
7446
7447 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7448 {
7449 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7450 return *this;
7451 }
7452
7453 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7454 {
7455 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7456 return *this;
7457 }
7458
7459 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7460 {
7461 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7462 return *this;
7463 }
7464
7465 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7466 {
7467 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7468 return *this;
7469 }
7470
7471 operator const VkPipelineVertexInputStateCreateInfo&() const
7472 {
7473 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7474 }
7475
7476 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7477 {
7478 return ( sType == rhs.sType )
7479 && ( pNext == rhs.pNext )
7480 && ( flags == rhs.flags )
7481 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7482 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7483 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7484 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7485 }
7486
7487 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7488 {
7489 return !operator==( rhs );
7490 }
7491
7492 private:
7493 StructureType sType;
7494
7495 public:
7496 const void* pNext;
7497 PipelineVertexInputStateCreateFlags flags;
7498 uint32_t vertexBindingDescriptionCount;
7499 const VertexInputBindingDescription* pVertexBindingDescriptions;
7500 uint32_t vertexAttributeDescriptionCount;
7501 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7502 };
7503 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7504
7505 struct PipelineInputAssemblyStateCreateInfo
7506 {
7507 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7508 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7509 , pNext( nullptr )
7510 , flags( flags_ )
7511 , topology( topology_ )
7512 , primitiveRestartEnable( primitiveRestartEnable_ )
7513 {
7514 }
7515
7516 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7517 {
7518 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7519 }
7520
7521 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7522 {
7523 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7524 return *this;
7525 }
7526
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007527 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7528 {
7529 pNext = pNext_;
7530 return *this;
7531 }
7532
7533 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7534 {
7535 flags = flags_;
7536 return *this;
7537 }
7538
7539 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7540 {
7541 topology = topology_;
7542 return *this;
7543 }
7544
7545 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7546 {
7547 primitiveRestartEnable = primitiveRestartEnable_;
7548 return *this;
7549 }
7550
7551 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7552 {
7553 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7554 }
7555
7556 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7557 {
7558 return ( sType == rhs.sType )
7559 && ( pNext == rhs.pNext )
7560 && ( flags == rhs.flags )
7561 && ( topology == rhs.topology )
7562 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7563 }
7564
7565 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7566 {
7567 return !operator==( rhs );
7568 }
7569
7570 private:
7571 StructureType sType;
7572
7573 public:
7574 const void* pNext;
7575 PipelineInputAssemblyStateCreateFlags flags;
7576 PrimitiveTopology topology;
7577 Bool32 primitiveRestartEnable;
7578 };
7579 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7580
7581 struct PipelineTessellationStateCreateInfo
7582 {
7583 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7584 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7585 , pNext( nullptr )
7586 , flags( flags_ )
7587 , patchControlPoints( patchControlPoints_ )
7588 {
7589 }
7590
7591 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7592 {
7593 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7594 }
7595
7596 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7597 {
7598 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7599 return *this;
7600 }
7601
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007602 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7603 {
7604 pNext = pNext_;
7605 return *this;
7606 }
7607
7608 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7609 {
7610 flags = flags_;
7611 return *this;
7612 }
7613
7614 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7615 {
7616 patchControlPoints = patchControlPoints_;
7617 return *this;
7618 }
7619
7620 operator const VkPipelineTessellationStateCreateInfo&() const
7621 {
7622 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7623 }
7624
7625 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7626 {
7627 return ( sType == rhs.sType )
7628 && ( pNext == rhs.pNext )
7629 && ( flags == rhs.flags )
7630 && ( patchControlPoints == rhs.patchControlPoints );
7631 }
7632
7633 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7634 {
7635 return !operator==( rhs );
7636 }
7637
7638 private:
7639 StructureType sType;
7640
7641 public:
7642 const void* pNext;
7643 PipelineTessellationStateCreateFlags flags;
7644 uint32_t patchControlPoints;
7645 };
7646 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7647
7648 struct PipelineViewportStateCreateInfo
7649 {
7650 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7651 : sType( StructureType::ePipelineViewportStateCreateInfo )
7652 , pNext( nullptr )
7653 , flags( flags_ )
7654 , viewportCount( viewportCount_ )
7655 , pViewports( pViewports_ )
7656 , scissorCount( scissorCount_ )
7657 , pScissors( pScissors_ )
7658 {
7659 }
7660
7661 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7662 {
7663 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7664 }
7665
7666 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7667 {
7668 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7669 return *this;
7670 }
7671
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007672 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7673 {
7674 pNext = pNext_;
7675 return *this;
7676 }
7677
7678 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7679 {
7680 flags = flags_;
7681 return *this;
7682 }
7683
7684 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7685 {
7686 viewportCount = viewportCount_;
7687 return *this;
7688 }
7689
7690 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7691 {
7692 pViewports = pViewports_;
7693 return *this;
7694 }
7695
7696 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7697 {
7698 scissorCount = scissorCount_;
7699 return *this;
7700 }
7701
7702 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7703 {
7704 pScissors = pScissors_;
7705 return *this;
7706 }
7707
7708 operator const VkPipelineViewportStateCreateInfo&() const
7709 {
7710 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7711 }
7712
7713 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7714 {
7715 return ( sType == rhs.sType )
7716 && ( pNext == rhs.pNext )
7717 && ( flags == rhs.flags )
7718 && ( viewportCount == rhs.viewportCount )
7719 && ( pViewports == rhs.pViewports )
7720 && ( scissorCount == rhs.scissorCount )
7721 && ( pScissors == rhs.pScissors );
7722 }
7723
7724 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7725 {
7726 return !operator==( rhs );
7727 }
7728
7729 private:
7730 StructureType sType;
7731
7732 public:
7733 const void* pNext;
7734 PipelineViewportStateCreateFlags flags;
7735 uint32_t viewportCount;
7736 const Viewport* pViewports;
7737 uint32_t scissorCount;
7738 const Rect2D* pScissors;
7739 };
7740 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7741
7742 struct PipelineRasterizationStateCreateInfo
7743 {
7744 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 )
7745 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7746 , pNext( nullptr )
7747 , flags( flags_ )
7748 , depthClampEnable( depthClampEnable_ )
7749 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7750 , polygonMode( polygonMode_ )
7751 , cullMode( cullMode_ )
7752 , frontFace( frontFace_ )
7753 , depthBiasEnable( depthBiasEnable_ )
7754 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7755 , depthBiasClamp( depthBiasClamp_ )
7756 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7757 , lineWidth( lineWidth_ )
7758 {
7759 }
7760
7761 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7762 {
7763 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7764 }
7765
7766 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7767 {
7768 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7769 return *this;
7770 }
7771
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007772 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7773 {
7774 pNext = pNext_;
7775 return *this;
7776 }
7777
7778 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7779 {
7780 flags = flags_;
7781 return *this;
7782 }
7783
7784 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7785 {
7786 depthClampEnable = depthClampEnable_;
7787 return *this;
7788 }
7789
7790 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7791 {
7792 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7793 return *this;
7794 }
7795
7796 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7797 {
7798 polygonMode = polygonMode_;
7799 return *this;
7800 }
7801
7802 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7803 {
7804 cullMode = cullMode_;
7805 return *this;
7806 }
7807
7808 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7809 {
7810 frontFace = frontFace_;
7811 return *this;
7812 }
7813
7814 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7815 {
7816 depthBiasEnable = depthBiasEnable_;
7817 return *this;
7818 }
7819
7820 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7821 {
7822 depthBiasConstantFactor = depthBiasConstantFactor_;
7823 return *this;
7824 }
7825
7826 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7827 {
7828 depthBiasClamp = depthBiasClamp_;
7829 return *this;
7830 }
7831
7832 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7833 {
7834 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7835 return *this;
7836 }
7837
7838 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7839 {
7840 lineWidth = lineWidth_;
7841 return *this;
7842 }
7843
7844 operator const VkPipelineRasterizationStateCreateInfo&() const
7845 {
7846 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7847 }
7848
7849 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7850 {
7851 return ( sType == rhs.sType )
7852 && ( pNext == rhs.pNext )
7853 && ( flags == rhs.flags )
7854 && ( depthClampEnable == rhs.depthClampEnable )
7855 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7856 && ( polygonMode == rhs.polygonMode )
7857 && ( cullMode == rhs.cullMode )
7858 && ( frontFace == rhs.frontFace )
7859 && ( depthBiasEnable == rhs.depthBiasEnable )
7860 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7861 && ( depthBiasClamp == rhs.depthBiasClamp )
7862 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7863 && ( lineWidth == rhs.lineWidth );
7864 }
7865
7866 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7867 {
7868 return !operator==( rhs );
7869 }
7870
7871 private:
7872 StructureType sType;
7873
7874 public:
7875 const void* pNext;
7876 PipelineRasterizationStateCreateFlags flags;
7877 Bool32 depthClampEnable;
7878 Bool32 rasterizerDiscardEnable;
7879 PolygonMode polygonMode;
7880 CullModeFlags cullMode;
7881 FrontFace frontFace;
7882 Bool32 depthBiasEnable;
7883 float depthBiasConstantFactor;
7884 float depthBiasClamp;
7885 float depthBiasSlopeFactor;
7886 float lineWidth;
7887 };
7888 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7889
7890 struct PipelineDepthStencilStateCreateInfo
7891 {
7892 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 )
7893 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7894 , pNext( nullptr )
7895 , flags( flags_ )
7896 , depthTestEnable( depthTestEnable_ )
7897 , depthWriteEnable( depthWriteEnable_ )
7898 , depthCompareOp( depthCompareOp_ )
7899 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7900 , stencilTestEnable( stencilTestEnable_ )
7901 , front( front_ )
7902 , back( back_ )
7903 , minDepthBounds( minDepthBounds_ )
7904 , maxDepthBounds( maxDepthBounds_ )
7905 {
7906 }
7907
7908 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7909 {
7910 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7911 }
7912
7913 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7914 {
7915 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7916 return *this;
7917 }
7918
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007919 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7920 {
7921 pNext = pNext_;
7922 return *this;
7923 }
7924
7925 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
7926 {
7927 flags = flags_;
7928 return *this;
7929 }
7930
7931 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
7932 {
7933 depthTestEnable = depthTestEnable_;
7934 return *this;
7935 }
7936
7937 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
7938 {
7939 depthWriteEnable = depthWriteEnable_;
7940 return *this;
7941 }
7942
7943 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
7944 {
7945 depthCompareOp = depthCompareOp_;
7946 return *this;
7947 }
7948
7949 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
7950 {
7951 depthBoundsTestEnable = depthBoundsTestEnable_;
7952 return *this;
7953 }
7954
7955 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
7956 {
7957 stencilTestEnable = stencilTestEnable_;
7958 return *this;
7959 }
7960
7961 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
7962 {
7963 front = front_;
7964 return *this;
7965 }
7966
7967 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
7968 {
7969 back = back_;
7970 return *this;
7971 }
7972
7973 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
7974 {
7975 minDepthBounds = minDepthBounds_;
7976 return *this;
7977 }
7978
7979 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
7980 {
7981 maxDepthBounds = maxDepthBounds_;
7982 return *this;
7983 }
7984
7985 operator const VkPipelineDepthStencilStateCreateInfo&() const
7986 {
7987 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
7988 }
7989
7990 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
7991 {
7992 return ( sType == rhs.sType )
7993 && ( pNext == rhs.pNext )
7994 && ( flags == rhs.flags )
7995 && ( depthTestEnable == rhs.depthTestEnable )
7996 && ( depthWriteEnable == rhs.depthWriteEnable )
7997 && ( depthCompareOp == rhs.depthCompareOp )
7998 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
7999 && ( stencilTestEnable == rhs.stencilTestEnable )
8000 && ( front == rhs.front )
8001 && ( back == rhs.back )
8002 && ( minDepthBounds == rhs.minDepthBounds )
8003 && ( maxDepthBounds == rhs.maxDepthBounds );
8004 }
8005
8006 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8007 {
8008 return !operator==( rhs );
8009 }
8010
8011 private:
8012 StructureType sType;
8013
8014 public:
8015 const void* pNext;
8016 PipelineDepthStencilStateCreateFlags flags;
8017 Bool32 depthTestEnable;
8018 Bool32 depthWriteEnable;
8019 CompareOp depthCompareOp;
8020 Bool32 depthBoundsTestEnable;
8021 Bool32 stencilTestEnable;
8022 StencilOpState front;
8023 StencilOpState back;
8024 float minDepthBounds;
8025 float maxDepthBounds;
8026 };
8027 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8028
8029 struct PipelineCacheCreateInfo
8030 {
8031 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8032 : sType( StructureType::ePipelineCacheCreateInfo )
8033 , pNext( nullptr )
8034 , flags( flags_ )
8035 , initialDataSize( initialDataSize_ )
8036 , pInitialData( pInitialData_ )
8037 {
8038 }
8039
8040 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8041 {
8042 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
8043 }
8044
8045 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8046 {
8047 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
8048 return *this;
8049 }
8050
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008051 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8052 {
8053 pNext = pNext_;
8054 return *this;
8055 }
8056
8057 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8058 {
8059 flags = flags_;
8060 return *this;
8061 }
8062
8063 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8064 {
8065 initialDataSize = initialDataSize_;
8066 return *this;
8067 }
8068
8069 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8070 {
8071 pInitialData = pInitialData_;
8072 return *this;
8073 }
8074
8075 operator const VkPipelineCacheCreateInfo&() const
8076 {
8077 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8078 }
8079
8080 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8081 {
8082 return ( sType == rhs.sType )
8083 && ( pNext == rhs.pNext )
8084 && ( flags == rhs.flags )
8085 && ( initialDataSize == rhs.initialDataSize )
8086 && ( pInitialData == rhs.pInitialData );
8087 }
8088
8089 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8090 {
8091 return !operator==( rhs );
8092 }
8093
8094 private:
8095 StructureType sType;
8096
8097 public:
8098 const void* pNext;
8099 PipelineCacheCreateFlags flags;
8100 size_t initialDataSize;
8101 const void* pInitialData;
8102 };
8103 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8104
8105 struct SamplerCreateInfo
8106 {
8107 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 )
8108 : sType( StructureType::eSamplerCreateInfo )
8109 , pNext( nullptr )
8110 , flags( flags_ )
8111 , magFilter( magFilter_ )
8112 , minFilter( minFilter_ )
8113 , mipmapMode( mipmapMode_ )
8114 , addressModeU( addressModeU_ )
8115 , addressModeV( addressModeV_ )
8116 , addressModeW( addressModeW_ )
8117 , mipLodBias( mipLodBias_ )
8118 , anisotropyEnable( anisotropyEnable_ )
8119 , maxAnisotropy( maxAnisotropy_ )
8120 , compareEnable( compareEnable_ )
8121 , compareOp( compareOp_ )
8122 , minLod( minLod_ )
8123 , maxLod( maxLod_ )
8124 , borderColor( borderColor_ )
8125 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8126 {
8127 }
8128
8129 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8130 {
8131 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8132 }
8133
8134 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8135 {
8136 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8137 return *this;
8138 }
8139
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008140 SamplerCreateInfo& setPNext( const void* pNext_ )
8141 {
8142 pNext = pNext_;
8143 return *this;
8144 }
8145
8146 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8147 {
8148 flags = flags_;
8149 return *this;
8150 }
8151
8152 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8153 {
8154 magFilter = magFilter_;
8155 return *this;
8156 }
8157
8158 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8159 {
8160 minFilter = minFilter_;
8161 return *this;
8162 }
8163
8164 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8165 {
8166 mipmapMode = mipmapMode_;
8167 return *this;
8168 }
8169
8170 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8171 {
8172 addressModeU = addressModeU_;
8173 return *this;
8174 }
8175
8176 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8177 {
8178 addressModeV = addressModeV_;
8179 return *this;
8180 }
8181
8182 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8183 {
8184 addressModeW = addressModeW_;
8185 return *this;
8186 }
8187
8188 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8189 {
8190 mipLodBias = mipLodBias_;
8191 return *this;
8192 }
8193
8194 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8195 {
8196 anisotropyEnable = anisotropyEnable_;
8197 return *this;
8198 }
8199
8200 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8201 {
8202 maxAnisotropy = maxAnisotropy_;
8203 return *this;
8204 }
8205
8206 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8207 {
8208 compareEnable = compareEnable_;
8209 return *this;
8210 }
8211
8212 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8213 {
8214 compareOp = compareOp_;
8215 return *this;
8216 }
8217
8218 SamplerCreateInfo& setMinLod( float minLod_ )
8219 {
8220 minLod = minLod_;
8221 return *this;
8222 }
8223
8224 SamplerCreateInfo& setMaxLod( float maxLod_ )
8225 {
8226 maxLod = maxLod_;
8227 return *this;
8228 }
8229
8230 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8231 {
8232 borderColor = borderColor_;
8233 return *this;
8234 }
8235
8236 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8237 {
8238 unnormalizedCoordinates = unnormalizedCoordinates_;
8239 return *this;
8240 }
8241
8242 operator const VkSamplerCreateInfo&() const
8243 {
8244 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8245 }
8246
8247 bool operator==( SamplerCreateInfo const& rhs ) const
8248 {
8249 return ( sType == rhs.sType )
8250 && ( pNext == rhs.pNext )
8251 && ( flags == rhs.flags )
8252 && ( magFilter == rhs.magFilter )
8253 && ( minFilter == rhs.minFilter )
8254 && ( mipmapMode == rhs.mipmapMode )
8255 && ( addressModeU == rhs.addressModeU )
8256 && ( addressModeV == rhs.addressModeV )
8257 && ( addressModeW == rhs.addressModeW )
8258 && ( mipLodBias == rhs.mipLodBias )
8259 && ( anisotropyEnable == rhs.anisotropyEnable )
8260 && ( maxAnisotropy == rhs.maxAnisotropy )
8261 && ( compareEnable == rhs.compareEnable )
8262 && ( compareOp == rhs.compareOp )
8263 && ( minLod == rhs.minLod )
8264 && ( maxLod == rhs.maxLod )
8265 && ( borderColor == rhs.borderColor )
8266 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8267 }
8268
8269 bool operator!=( SamplerCreateInfo const& rhs ) const
8270 {
8271 return !operator==( rhs );
8272 }
8273
8274 private:
8275 StructureType sType;
8276
8277 public:
8278 const void* pNext;
8279 SamplerCreateFlags flags;
8280 Filter magFilter;
8281 Filter minFilter;
8282 SamplerMipmapMode mipmapMode;
8283 SamplerAddressMode addressModeU;
8284 SamplerAddressMode addressModeV;
8285 SamplerAddressMode addressModeW;
8286 float mipLodBias;
8287 Bool32 anisotropyEnable;
8288 float maxAnisotropy;
8289 Bool32 compareEnable;
8290 CompareOp compareOp;
8291 float minLod;
8292 float maxLod;
8293 BorderColor borderColor;
8294 Bool32 unnormalizedCoordinates;
8295 };
8296 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8297
8298 struct CommandBufferAllocateInfo
8299 {
8300 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8301 : sType( StructureType::eCommandBufferAllocateInfo )
8302 , pNext( nullptr )
8303 , commandPool( commandPool_ )
8304 , level( level_ )
8305 , commandBufferCount( commandBufferCount_ )
8306 {
8307 }
8308
8309 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8310 {
8311 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8312 }
8313
8314 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8315 {
8316 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8317 return *this;
8318 }
8319
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008320 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8321 {
8322 pNext = pNext_;
8323 return *this;
8324 }
8325
8326 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8327 {
8328 commandPool = commandPool_;
8329 return *this;
8330 }
8331
8332 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8333 {
8334 level = level_;
8335 return *this;
8336 }
8337
8338 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8339 {
8340 commandBufferCount = commandBufferCount_;
8341 return *this;
8342 }
8343
8344 operator const VkCommandBufferAllocateInfo&() const
8345 {
8346 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8347 }
8348
8349 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8350 {
8351 return ( sType == rhs.sType )
8352 && ( pNext == rhs.pNext )
8353 && ( commandPool == rhs.commandPool )
8354 && ( level == rhs.level )
8355 && ( commandBufferCount == rhs.commandBufferCount );
8356 }
8357
8358 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8359 {
8360 return !operator==( rhs );
8361 }
8362
8363 private:
8364 StructureType sType;
8365
8366 public:
8367 const void* pNext;
8368 CommandPool commandPool;
8369 CommandBufferLevel level;
8370 uint32_t commandBufferCount;
8371 };
8372 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8373
8374 struct RenderPassBeginInfo
8375 {
8376 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8377 : sType( StructureType::eRenderPassBeginInfo )
8378 , pNext( nullptr )
8379 , renderPass( renderPass_ )
8380 , framebuffer( framebuffer_ )
8381 , renderArea( renderArea_ )
8382 , clearValueCount( clearValueCount_ )
8383 , pClearValues( pClearValues_ )
8384 {
8385 }
8386
8387 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8388 {
8389 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8390 }
8391
8392 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8393 {
8394 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8395 return *this;
8396 }
8397
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008398 RenderPassBeginInfo& setPNext( const void* pNext_ )
8399 {
8400 pNext = pNext_;
8401 return *this;
8402 }
8403
8404 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8405 {
8406 renderPass = renderPass_;
8407 return *this;
8408 }
8409
8410 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8411 {
8412 framebuffer = framebuffer_;
8413 return *this;
8414 }
8415
8416 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8417 {
8418 renderArea = renderArea_;
8419 return *this;
8420 }
8421
8422 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8423 {
8424 clearValueCount = clearValueCount_;
8425 return *this;
8426 }
8427
8428 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8429 {
8430 pClearValues = pClearValues_;
8431 return *this;
8432 }
8433
8434 operator const VkRenderPassBeginInfo&() const
8435 {
8436 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8437 }
8438
8439 bool operator==( RenderPassBeginInfo const& rhs ) const
8440 {
8441 return ( sType == rhs.sType )
8442 && ( pNext == rhs.pNext )
8443 && ( renderPass == rhs.renderPass )
8444 && ( framebuffer == rhs.framebuffer )
8445 && ( renderArea == rhs.renderArea )
8446 && ( clearValueCount == rhs.clearValueCount )
8447 && ( pClearValues == rhs.pClearValues );
8448 }
8449
8450 bool operator!=( RenderPassBeginInfo const& rhs ) const
8451 {
8452 return !operator==( rhs );
8453 }
8454
8455 private:
8456 StructureType sType;
8457
8458 public:
8459 const void* pNext;
8460 RenderPass renderPass;
8461 Framebuffer framebuffer;
8462 Rect2D renderArea;
8463 uint32_t clearValueCount;
8464 const ClearValue* pClearValues;
8465 };
8466 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8467
8468 struct EventCreateInfo
8469 {
8470 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8471 : sType( StructureType::eEventCreateInfo )
8472 , pNext( nullptr )
8473 , flags( flags_ )
8474 {
8475 }
8476
8477 EventCreateInfo( VkEventCreateInfo const & rhs )
8478 {
8479 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8480 }
8481
8482 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8483 {
8484 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8485 return *this;
8486 }
8487
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008488 EventCreateInfo& setPNext( const void* pNext_ )
8489 {
8490 pNext = pNext_;
8491 return *this;
8492 }
8493
8494 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8495 {
8496 flags = flags_;
8497 return *this;
8498 }
8499
8500 operator const VkEventCreateInfo&() const
8501 {
8502 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8503 }
8504
8505 bool operator==( EventCreateInfo const& rhs ) const
8506 {
8507 return ( sType == rhs.sType )
8508 && ( pNext == rhs.pNext )
8509 && ( flags == rhs.flags );
8510 }
8511
8512 bool operator!=( EventCreateInfo const& rhs ) const
8513 {
8514 return !operator==( rhs );
8515 }
8516
8517 private:
8518 StructureType sType;
8519
8520 public:
8521 const void* pNext;
8522 EventCreateFlags flags;
8523 };
8524 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8525
8526 struct SemaphoreCreateInfo
8527 {
8528 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8529 : sType( StructureType::eSemaphoreCreateInfo )
8530 , pNext( nullptr )
8531 , flags( flags_ )
8532 {
8533 }
8534
8535 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8536 {
8537 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8538 }
8539
8540 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8541 {
8542 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8543 return *this;
8544 }
8545
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008546 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8547 {
8548 pNext = pNext_;
8549 return *this;
8550 }
8551
8552 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8553 {
8554 flags = flags_;
8555 return *this;
8556 }
8557
8558 operator const VkSemaphoreCreateInfo&() const
8559 {
8560 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8561 }
8562
8563 bool operator==( SemaphoreCreateInfo const& rhs ) const
8564 {
8565 return ( sType == rhs.sType )
8566 && ( pNext == rhs.pNext )
8567 && ( flags == rhs.flags );
8568 }
8569
8570 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8571 {
8572 return !operator==( rhs );
8573 }
8574
8575 private:
8576 StructureType sType;
8577
8578 public:
8579 const void* pNext;
8580 SemaphoreCreateFlags flags;
8581 };
8582 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8583
8584 struct FramebufferCreateInfo
8585 {
8586 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 )
8587 : sType( StructureType::eFramebufferCreateInfo )
8588 , pNext( nullptr )
8589 , flags( flags_ )
8590 , renderPass( renderPass_ )
8591 , attachmentCount( attachmentCount_ )
8592 , pAttachments( pAttachments_ )
8593 , width( width_ )
8594 , height( height_ )
8595 , layers( layers_ )
8596 {
8597 }
8598
8599 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8600 {
8601 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8602 }
8603
8604 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8605 {
8606 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8607 return *this;
8608 }
8609
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008610 FramebufferCreateInfo& setPNext( const void* pNext_ )
8611 {
8612 pNext = pNext_;
8613 return *this;
8614 }
8615
8616 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8617 {
8618 flags = flags_;
8619 return *this;
8620 }
8621
8622 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8623 {
8624 renderPass = renderPass_;
8625 return *this;
8626 }
8627
8628 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8629 {
8630 attachmentCount = attachmentCount_;
8631 return *this;
8632 }
8633
8634 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8635 {
8636 pAttachments = pAttachments_;
8637 return *this;
8638 }
8639
8640 FramebufferCreateInfo& setWidth( uint32_t width_ )
8641 {
8642 width = width_;
8643 return *this;
8644 }
8645
8646 FramebufferCreateInfo& setHeight( uint32_t height_ )
8647 {
8648 height = height_;
8649 return *this;
8650 }
8651
8652 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8653 {
8654 layers = layers_;
8655 return *this;
8656 }
8657
8658 operator const VkFramebufferCreateInfo&() const
8659 {
8660 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8661 }
8662
8663 bool operator==( FramebufferCreateInfo const& rhs ) const
8664 {
8665 return ( sType == rhs.sType )
8666 && ( pNext == rhs.pNext )
8667 && ( flags == rhs.flags )
8668 && ( renderPass == rhs.renderPass )
8669 && ( attachmentCount == rhs.attachmentCount )
8670 && ( pAttachments == rhs.pAttachments )
8671 && ( width == rhs.width )
8672 && ( height == rhs.height )
8673 && ( layers == rhs.layers );
8674 }
8675
8676 bool operator!=( FramebufferCreateInfo const& rhs ) const
8677 {
8678 return !operator==( rhs );
8679 }
8680
8681 private:
8682 StructureType sType;
8683
8684 public:
8685 const void* pNext;
8686 FramebufferCreateFlags flags;
8687 RenderPass renderPass;
8688 uint32_t attachmentCount;
8689 const ImageView* pAttachments;
8690 uint32_t width;
8691 uint32_t height;
8692 uint32_t layers;
8693 };
8694 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8695
8696 struct DisplayModeCreateInfoKHR
8697 {
8698 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8699 : sType( StructureType::eDisplayModeCreateInfoKHR )
8700 , pNext( nullptr )
8701 , flags( flags_ )
8702 , parameters( parameters_ )
8703 {
8704 }
8705
8706 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8707 {
8708 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8709 }
8710
8711 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8712 {
8713 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8714 return *this;
8715 }
8716
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008717 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8718 {
8719 pNext = pNext_;
8720 return *this;
8721 }
8722
8723 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8724 {
8725 flags = flags_;
8726 return *this;
8727 }
8728
8729 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8730 {
8731 parameters = parameters_;
8732 return *this;
8733 }
8734
8735 operator const VkDisplayModeCreateInfoKHR&() const
8736 {
8737 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8738 }
8739
8740 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8741 {
8742 return ( sType == rhs.sType )
8743 && ( pNext == rhs.pNext )
8744 && ( flags == rhs.flags )
8745 && ( parameters == rhs.parameters );
8746 }
8747
8748 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8749 {
8750 return !operator==( rhs );
8751 }
8752
8753 private:
8754 StructureType sType;
8755
8756 public:
8757 const void* pNext;
8758 DisplayModeCreateFlagsKHR flags;
8759 DisplayModeParametersKHR parameters;
8760 };
8761 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8762
8763 struct DisplayPresentInfoKHR
8764 {
8765 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8766 : sType( StructureType::eDisplayPresentInfoKHR )
8767 , pNext( nullptr )
8768 , srcRect( srcRect_ )
8769 , dstRect( dstRect_ )
8770 , persistent( persistent_ )
8771 {
8772 }
8773
8774 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8775 {
8776 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8777 }
8778
8779 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8780 {
8781 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8782 return *this;
8783 }
8784
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008785 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8786 {
8787 pNext = pNext_;
8788 return *this;
8789 }
8790
8791 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8792 {
8793 srcRect = srcRect_;
8794 return *this;
8795 }
8796
8797 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8798 {
8799 dstRect = dstRect_;
8800 return *this;
8801 }
8802
8803 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8804 {
8805 persistent = persistent_;
8806 return *this;
8807 }
8808
8809 operator const VkDisplayPresentInfoKHR&() const
8810 {
8811 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8812 }
8813
8814 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8815 {
8816 return ( sType == rhs.sType )
8817 && ( pNext == rhs.pNext )
8818 && ( srcRect == rhs.srcRect )
8819 && ( dstRect == rhs.dstRect )
8820 && ( persistent == rhs.persistent );
8821 }
8822
8823 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8824 {
8825 return !operator==( rhs );
8826 }
8827
8828 private:
8829 StructureType sType;
8830
8831 public:
8832 const void* pNext;
8833 Rect2D srcRect;
8834 Rect2D dstRect;
8835 Bool32 persistent;
8836 };
8837 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8838
8839#ifdef VK_USE_PLATFORM_ANDROID_KHR
8840 struct AndroidSurfaceCreateInfoKHR
8841 {
8842 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8843 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8844 , pNext( nullptr )
8845 , flags( flags_ )
8846 , window( window_ )
8847 {
8848 }
8849
8850 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8851 {
8852 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8853 }
8854
8855 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8856 {
8857 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8858 return *this;
8859 }
8860
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008861 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8862 {
8863 pNext = pNext_;
8864 return *this;
8865 }
8866
8867 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8868 {
8869 flags = flags_;
8870 return *this;
8871 }
8872
8873 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8874 {
8875 window = window_;
8876 return *this;
8877 }
8878
8879 operator const VkAndroidSurfaceCreateInfoKHR&() const
8880 {
8881 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8882 }
8883
8884 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8885 {
8886 return ( sType == rhs.sType )
8887 && ( pNext == rhs.pNext )
8888 && ( flags == rhs.flags )
8889 && ( window == rhs.window );
8890 }
8891
8892 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8893 {
8894 return !operator==( rhs );
8895 }
8896
8897 private:
8898 StructureType sType;
8899
8900 public:
8901 const void* pNext;
8902 AndroidSurfaceCreateFlagsKHR flags;
8903 ANativeWindow* window;
8904 };
8905 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8906#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8907
8908#ifdef VK_USE_PLATFORM_MIR_KHR
8909 struct MirSurfaceCreateInfoKHR
8910 {
8911 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8912 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8913 , pNext( nullptr )
8914 , flags( flags_ )
8915 , connection( connection_ )
8916 , mirSurface( mirSurface_ )
8917 {
8918 }
8919
8920 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8921 {
8922 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8923 }
8924
8925 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8926 {
8927 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8928 return *this;
8929 }
8930
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008931 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8932 {
8933 pNext = pNext_;
8934 return *this;
8935 }
8936
8937 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
8938 {
8939 flags = flags_;
8940 return *this;
8941 }
8942
8943 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
8944 {
8945 connection = connection_;
8946 return *this;
8947 }
8948
8949 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
8950 {
8951 mirSurface = mirSurface_;
8952 return *this;
8953 }
8954
8955 operator const VkMirSurfaceCreateInfoKHR&() const
8956 {
8957 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
8958 }
8959
8960 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
8961 {
8962 return ( sType == rhs.sType )
8963 && ( pNext == rhs.pNext )
8964 && ( flags == rhs.flags )
8965 && ( connection == rhs.connection )
8966 && ( mirSurface == rhs.mirSurface );
8967 }
8968
8969 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
8970 {
8971 return !operator==( rhs );
8972 }
8973
8974 private:
8975 StructureType sType;
8976
8977 public:
8978 const void* pNext;
8979 MirSurfaceCreateFlagsKHR flags;
8980 MirConnection* connection;
8981 MirSurface* mirSurface;
8982 };
8983 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8984#endif /*VK_USE_PLATFORM_MIR_KHR*/
8985
Mark Young39389872017-01-19 21:10:49 -07008986#ifdef VK_USE_PLATFORM_VI_NN
8987 struct ViSurfaceCreateInfoNN
8988 {
8989 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
8990 : sType( StructureType::eViSurfaceCreateInfoNN )
8991 , pNext( nullptr )
8992 , flags( flags_ )
8993 , window( window_ )
8994 {
8995 }
8996
8997 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
8998 {
8999 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
9000 }
9001
9002 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9003 {
9004 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
9005 return *this;
9006 }
9007
Mark Young39389872017-01-19 21:10:49 -07009008 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9009 {
9010 pNext = pNext_;
9011 return *this;
9012 }
9013
9014 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9015 {
9016 flags = flags_;
9017 return *this;
9018 }
9019
9020 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9021 {
9022 window = window_;
9023 return *this;
9024 }
9025
9026 operator const VkViSurfaceCreateInfoNN&() const
9027 {
9028 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9029 }
9030
9031 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9032 {
9033 return ( sType == rhs.sType )
9034 && ( pNext == rhs.pNext )
9035 && ( flags == rhs.flags )
9036 && ( window == rhs.window );
9037 }
9038
9039 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9040 {
9041 return !operator==( rhs );
9042 }
9043
9044 private:
9045 StructureType sType;
9046
9047 public:
9048 const void* pNext;
9049 ViSurfaceCreateFlagsNN flags;
9050 void* window;
9051 };
9052 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9053#endif /*VK_USE_PLATFORM_VI_NN*/
9054
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009055#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9056 struct WaylandSurfaceCreateInfoKHR
9057 {
9058 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9059 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9060 , pNext( nullptr )
9061 , flags( flags_ )
9062 , display( display_ )
9063 , surface( surface_ )
9064 {
9065 }
9066
9067 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9068 {
9069 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
9070 }
9071
9072 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9073 {
9074 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
9075 return *this;
9076 }
9077
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009078 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9079 {
9080 pNext = pNext_;
9081 return *this;
9082 }
9083
9084 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9085 {
9086 flags = flags_;
9087 return *this;
9088 }
9089
9090 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9091 {
9092 display = display_;
9093 return *this;
9094 }
9095
9096 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9097 {
9098 surface = surface_;
9099 return *this;
9100 }
9101
9102 operator const VkWaylandSurfaceCreateInfoKHR&() const
9103 {
9104 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9105 }
9106
9107 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9108 {
9109 return ( sType == rhs.sType )
9110 && ( pNext == rhs.pNext )
9111 && ( flags == rhs.flags )
9112 && ( display == rhs.display )
9113 && ( surface == rhs.surface );
9114 }
9115
9116 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9117 {
9118 return !operator==( rhs );
9119 }
9120
9121 private:
9122 StructureType sType;
9123
9124 public:
9125 const void* pNext;
9126 WaylandSurfaceCreateFlagsKHR flags;
9127 struct wl_display* display;
9128 struct wl_surface* surface;
9129 };
9130 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9131#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9132
9133#ifdef VK_USE_PLATFORM_WIN32_KHR
9134 struct Win32SurfaceCreateInfoKHR
9135 {
9136 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9137 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9138 , pNext( nullptr )
9139 , flags( flags_ )
9140 , hinstance( hinstance_ )
9141 , hwnd( hwnd_ )
9142 {
9143 }
9144
9145 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9146 {
9147 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9148 }
9149
9150 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9151 {
9152 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9153 return *this;
9154 }
9155
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009156 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9157 {
9158 pNext = pNext_;
9159 return *this;
9160 }
9161
9162 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9163 {
9164 flags = flags_;
9165 return *this;
9166 }
9167
9168 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9169 {
9170 hinstance = hinstance_;
9171 return *this;
9172 }
9173
9174 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9175 {
9176 hwnd = hwnd_;
9177 return *this;
9178 }
9179
9180 operator const VkWin32SurfaceCreateInfoKHR&() const
9181 {
9182 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9183 }
9184
9185 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9186 {
9187 return ( sType == rhs.sType )
9188 && ( pNext == rhs.pNext )
9189 && ( flags == rhs.flags )
9190 && ( hinstance == rhs.hinstance )
9191 && ( hwnd == rhs.hwnd );
9192 }
9193
9194 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9195 {
9196 return !operator==( rhs );
9197 }
9198
9199 private:
9200 StructureType sType;
9201
9202 public:
9203 const void* pNext;
9204 Win32SurfaceCreateFlagsKHR flags;
9205 HINSTANCE hinstance;
9206 HWND hwnd;
9207 };
9208 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9209#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9210
9211#ifdef VK_USE_PLATFORM_XLIB_KHR
9212 struct XlibSurfaceCreateInfoKHR
9213 {
9214 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9215 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9216 , pNext( nullptr )
9217 , flags( flags_ )
9218 , dpy( dpy_ )
9219 , window( window_ )
9220 {
9221 }
9222
9223 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9224 {
9225 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9226 }
9227
9228 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9229 {
9230 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9231 return *this;
9232 }
9233
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009234 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9235 {
9236 pNext = pNext_;
9237 return *this;
9238 }
9239
9240 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9241 {
9242 flags = flags_;
9243 return *this;
9244 }
9245
9246 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9247 {
9248 dpy = dpy_;
9249 return *this;
9250 }
9251
9252 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9253 {
9254 window = window_;
9255 return *this;
9256 }
9257
9258 operator const VkXlibSurfaceCreateInfoKHR&() const
9259 {
9260 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9261 }
9262
9263 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9264 {
9265 return ( sType == rhs.sType )
9266 && ( pNext == rhs.pNext )
9267 && ( flags == rhs.flags )
9268 && ( dpy == rhs.dpy )
9269 && ( window == rhs.window );
9270 }
9271
9272 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9273 {
9274 return !operator==( rhs );
9275 }
9276
9277 private:
9278 StructureType sType;
9279
9280 public:
9281 const void* pNext;
9282 XlibSurfaceCreateFlagsKHR flags;
9283 Display* dpy;
9284 Window window;
9285 };
9286 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9287#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9288
9289#ifdef VK_USE_PLATFORM_XCB_KHR
9290 struct XcbSurfaceCreateInfoKHR
9291 {
9292 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9293 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9294 , pNext( nullptr )
9295 , flags( flags_ )
9296 , connection( connection_ )
9297 , window( window_ )
9298 {
9299 }
9300
9301 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9302 {
9303 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9304 }
9305
9306 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9307 {
9308 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9309 return *this;
9310 }
9311
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009312 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9313 {
9314 pNext = pNext_;
9315 return *this;
9316 }
9317
9318 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9319 {
9320 flags = flags_;
9321 return *this;
9322 }
9323
9324 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9325 {
9326 connection = connection_;
9327 return *this;
9328 }
9329
9330 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9331 {
9332 window = window_;
9333 return *this;
9334 }
9335
9336 operator const VkXcbSurfaceCreateInfoKHR&() const
9337 {
9338 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9339 }
9340
9341 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9342 {
9343 return ( sType == rhs.sType )
9344 && ( pNext == rhs.pNext )
9345 && ( flags == rhs.flags )
9346 && ( connection == rhs.connection )
9347 && ( window == rhs.window );
9348 }
9349
9350 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9351 {
9352 return !operator==( rhs );
9353 }
9354
9355 private:
9356 StructureType sType;
9357
9358 public:
9359 const void* pNext;
9360 XcbSurfaceCreateFlagsKHR flags;
9361 xcb_connection_t* connection;
9362 xcb_window_t window;
9363 };
9364 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9365#endif /*VK_USE_PLATFORM_XCB_KHR*/
9366
9367 struct DebugMarkerMarkerInfoEXT
9368 {
9369 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9370 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9371 , pNext( nullptr )
9372 , pMarkerName( pMarkerName_ )
9373 {
9374 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9375 }
9376
9377 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9378 {
9379 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9380 }
9381
9382 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9383 {
9384 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9385 return *this;
9386 }
9387
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009388 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9389 {
9390 pNext = pNext_;
9391 return *this;
9392 }
9393
9394 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9395 {
9396 pMarkerName = pMarkerName_;
9397 return *this;
9398 }
9399
9400 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9401 {
9402 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9403 return *this;
9404 }
9405
9406 operator const VkDebugMarkerMarkerInfoEXT&() const
9407 {
9408 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9409 }
9410
9411 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9412 {
9413 return ( sType == rhs.sType )
9414 && ( pNext == rhs.pNext )
9415 && ( pMarkerName == rhs.pMarkerName )
9416 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9417 }
9418
9419 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9420 {
9421 return !operator==( rhs );
9422 }
9423
9424 private:
9425 StructureType sType;
9426
9427 public:
9428 const void* pNext;
9429 const char* pMarkerName;
9430 float color[4];
9431 };
9432 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9433
9434 struct DedicatedAllocationImageCreateInfoNV
9435 {
9436 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9437 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9438 , pNext( nullptr )
9439 , dedicatedAllocation( dedicatedAllocation_ )
9440 {
9441 }
9442
9443 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9444 {
9445 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9446 }
9447
9448 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9449 {
9450 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9451 return *this;
9452 }
9453
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009454 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9455 {
9456 pNext = pNext_;
9457 return *this;
9458 }
9459
9460 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9461 {
9462 dedicatedAllocation = dedicatedAllocation_;
9463 return *this;
9464 }
9465
9466 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9467 {
9468 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9469 }
9470
9471 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9472 {
9473 return ( sType == rhs.sType )
9474 && ( pNext == rhs.pNext )
9475 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9476 }
9477
9478 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9479 {
9480 return !operator==( rhs );
9481 }
9482
9483 private:
9484 StructureType sType;
9485
9486 public:
9487 const void* pNext;
9488 Bool32 dedicatedAllocation;
9489 };
9490 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9491
9492 struct DedicatedAllocationBufferCreateInfoNV
9493 {
9494 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9495 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9496 , pNext( nullptr )
9497 , dedicatedAllocation( dedicatedAllocation_ )
9498 {
9499 }
9500
9501 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9502 {
9503 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9504 }
9505
9506 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9507 {
9508 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9509 return *this;
9510 }
9511
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009512 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9513 {
9514 pNext = pNext_;
9515 return *this;
9516 }
9517
9518 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9519 {
9520 dedicatedAllocation = dedicatedAllocation_;
9521 return *this;
9522 }
9523
9524 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9525 {
9526 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9527 }
9528
9529 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9530 {
9531 return ( sType == rhs.sType )
9532 && ( pNext == rhs.pNext )
9533 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9534 }
9535
9536 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9537 {
9538 return !operator==( rhs );
9539 }
9540
9541 private:
9542 StructureType sType;
9543
9544 public:
9545 const void* pNext;
9546 Bool32 dedicatedAllocation;
9547 };
9548 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9549
9550 struct DedicatedAllocationMemoryAllocateInfoNV
9551 {
9552 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9553 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9554 , pNext( nullptr )
9555 , image( image_ )
9556 , buffer( buffer_ )
9557 {
9558 }
9559
9560 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9561 {
9562 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9563 }
9564
9565 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9566 {
9567 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9568 return *this;
9569 }
9570
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009571 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9572 {
9573 pNext = pNext_;
9574 return *this;
9575 }
9576
9577 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9578 {
9579 image = image_;
9580 return *this;
9581 }
9582
9583 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9584 {
9585 buffer = buffer_;
9586 return *this;
9587 }
9588
9589 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9590 {
9591 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9592 }
9593
9594 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9595 {
9596 return ( sType == rhs.sType )
9597 && ( pNext == rhs.pNext )
9598 && ( image == rhs.image )
9599 && ( buffer == rhs.buffer );
9600 }
9601
9602 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9603 {
9604 return !operator==( rhs );
9605 }
9606
9607 private:
9608 StructureType sType;
9609
9610 public:
9611 const void* pNext;
9612 Image image;
9613 Buffer buffer;
9614 };
9615 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9616
Lenny Komow6501c122016-08-31 15:03:49 -06009617#ifdef VK_USE_PLATFORM_WIN32_KHR
9618 struct ExportMemoryWin32HandleInfoNV
9619 {
9620 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9621 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9622 , pNext( nullptr )
9623 , pAttributes( pAttributes_ )
9624 , dwAccess( dwAccess_ )
9625 {
9626 }
9627
9628 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9629 {
9630 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9631 }
9632
9633 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9634 {
9635 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9636 return *this;
9637 }
9638
Lenny Komow6501c122016-08-31 15:03:49 -06009639 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9640 {
9641 pNext = pNext_;
9642 return *this;
9643 }
9644
9645 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9646 {
9647 pAttributes = pAttributes_;
9648 return *this;
9649 }
9650
9651 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9652 {
9653 dwAccess = dwAccess_;
9654 return *this;
9655 }
9656
9657 operator const VkExportMemoryWin32HandleInfoNV&() const
9658 {
9659 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9660 }
9661
9662 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9663 {
9664 return ( sType == rhs.sType )
9665 && ( pNext == rhs.pNext )
9666 && ( pAttributes == rhs.pAttributes )
9667 && ( dwAccess == rhs.dwAccess );
9668 }
9669
9670 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9671 {
9672 return !operator==( rhs );
9673 }
9674
9675 private:
9676 StructureType sType;
9677
9678 public:
9679 const void* pNext;
9680 const SECURITY_ATTRIBUTES* pAttributes;
9681 DWORD dwAccess;
9682 };
9683 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9684#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9685
9686#ifdef VK_USE_PLATFORM_WIN32_KHR
9687 struct Win32KeyedMutexAcquireReleaseInfoNV
9688 {
9689 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 )
9690 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9691 , pNext( nullptr )
9692 , acquireCount( acquireCount_ )
9693 , pAcquireSyncs( pAcquireSyncs_ )
9694 , pAcquireKeys( pAcquireKeys_ )
9695 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9696 , releaseCount( releaseCount_ )
9697 , pReleaseSyncs( pReleaseSyncs_ )
9698 , pReleaseKeys( pReleaseKeys_ )
9699 {
9700 }
9701
9702 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9703 {
9704 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9705 }
9706
9707 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9708 {
9709 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9710 return *this;
9711 }
9712
Lenny Komow6501c122016-08-31 15:03:49 -06009713 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9714 {
9715 pNext = pNext_;
9716 return *this;
9717 }
9718
9719 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9720 {
9721 acquireCount = acquireCount_;
9722 return *this;
9723 }
9724
9725 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9726 {
9727 pAcquireSyncs = pAcquireSyncs_;
9728 return *this;
9729 }
9730
9731 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9732 {
9733 pAcquireKeys = pAcquireKeys_;
9734 return *this;
9735 }
9736
9737 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9738 {
9739 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9740 return *this;
9741 }
9742
9743 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9744 {
9745 releaseCount = releaseCount_;
9746 return *this;
9747 }
9748
9749 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9750 {
9751 pReleaseSyncs = pReleaseSyncs_;
9752 return *this;
9753 }
9754
9755 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9756 {
9757 pReleaseKeys = pReleaseKeys_;
9758 return *this;
9759 }
9760
9761 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9762 {
9763 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9764 }
9765
9766 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9767 {
9768 return ( sType == rhs.sType )
9769 && ( pNext == rhs.pNext )
9770 && ( acquireCount == rhs.acquireCount )
9771 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9772 && ( pAcquireKeys == rhs.pAcquireKeys )
9773 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9774 && ( releaseCount == rhs.releaseCount )
9775 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9776 && ( pReleaseKeys == rhs.pReleaseKeys );
9777 }
9778
9779 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9780 {
9781 return !operator==( rhs );
9782 }
9783
9784 private:
9785 StructureType sType;
9786
9787 public:
9788 const void* pNext;
9789 uint32_t acquireCount;
9790 const DeviceMemory* pAcquireSyncs;
9791 const uint64_t* pAcquireKeys;
9792 const uint32_t* pAcquireTimeoutMilliseconds;
9793 uint32_t releaseCount;
9794 const DeviceMemory* pReleaseSyncs;
9795 const uint64_t* pReleaseKeys;
9796 };
9797 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9798#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9799
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009800 struct DeviceGeneratedCommandsFeaturesNVX
9801 {
9802 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9803 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9804 , pNext( nullptr )
9805 , computeBindingPointSupport( computeBindingPointSupport_ )
9806 {
9807 }
9808
9809 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9810 {
9811 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9812 }
9813
9814 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9815 {
9816 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9817 return *this;
9818 }
9819
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009820 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9821 {
9822 pNext = pNext_;
9823 return *this;
9824 }
9825
9826 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9827 {
9828 computeBindingPointSupport = computeBindingPointSupport_;
9829 return *this;
9830 }
9831
9832 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9833 {
9834 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9835 }
9836
9837 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9838 {
9839 return ( sType == rhs.sType )
9840 && ( pNext == rhs.pNext )
9841 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9842 }
9843
9844 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9845 {
9846 return !operator==( rhs );
9847 }
9848
9849 private:
9850 StructureType sType;
9851
9852 public:
9853 const void* pNext;
9854 Bool32 computeBindingPointSupport;
9855 };
9856 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9857
9858 struct DeviceGeneratedCommandsLimitsNVX
9859 {
9860 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9861 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9862 , pNext( nullptr )
9863 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9864 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9865 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9866 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9867 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9868 {
9869 }
9870
9871 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9872 {
9873 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9874 }
9875
9876 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9877 {
9878 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9879 return *this;
9880 }
9881
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009882 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9883 {
9884 pNext = pNext_;
9885 return *this;
9886 }
9887
9888 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9889 {
9890 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9891 return *this;
9892 }
9893
9894 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9895 {
9896 maxObjectEntryCounts = maxObjectEntryCounts_;
9897 return *this;
9898 }
9899
9900 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9901 {
9902 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9903 return *this;
9904 }
9905
9906 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9907 {
9908 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9909 return *this;
9910 }
9911
9912 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9913 {
9914 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9915 return *this;
9916 }
9917
9918 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9919 {
9920 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9921 }
9922
9923 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9924 {
9925 return ( sType == rhs.sType )
9926 && ( pNext == rhs.pNext )
9927 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9928 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9929 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9930 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9931 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9932 }
9933
9934 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9935 {
9936 return !operator==( rhs );
9937 }
9938
9939 private:
9940 StructureType sType;
9941
9942 public:
9943 const void* pNext;
9944 uint32_t maxIndirectCommandsLayoutTokenCount;
9945 uint32_t maxObjectEntryCounts;
9946 uint32_t minSequenceCountBufferOffsetAlignment;
9947 uint32_t minSequenceIndexBufferOffsetAlignment;
9948 uint32_t minCommandsTokenBufferOffsetAlignment;
9949 };
9950 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
9951
9952 struct CmdReserveSpaceForCommandsInfoNVX
9953 {
9954 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
9955 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
9956 , pNext( nullptr )
9957 , objectTable( objectTable_ )
9958 , indirectCommandsLayout( indirectCommandsLayout_ )
9959 , maxSequencesCount( maxSequencesCount_ )
9960 {
9961 }
9962
9963 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9964 {
9965 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9966 }
9967
9968 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9969 {
9970 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9971 return *this;
9972 }
9973
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009974 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
9975 {
9976 pNext = pNext_;
9977 return *this;
9978 }
9979
9980 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
9981 {
9982 objectTable = objectTable_;
9983 return *this;
9984 }
9985
9986 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
9987 {
9988 indirectCommandsLayout = indirectCommandsLayout_;
9989 return *this;
9990 }
9991
9992 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
9993 {
9994 maxSequencesCount = maxSequencesCount_;
9995 return *this;
9996 }
9997
9998 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
9999 {
10000 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10001 }
10002
10003 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10004 {
10005 return ( sType == rhs.sType )
10006 && ( pNext == rhs.pNext )
10007 && ( objectTable == rhs.objectTable )
10008 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10009 && ( maxSequencesCount == rhs.maxSequencesCount );
10010 }
10011
10012 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10013 {
10014 return !operator==( rhs );
10015 }
10016
10017 private:
10018 StructureType sType;
10019
10020 public:
10021 const void* pNext;
10022 ObjectTableNVX objectTable;
10023 IndirectCommandsLayoutNVX indirectCommandsLayout;
10024 uint32_t maxSequencesCount;
10025 };
10026 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10027
Mark Young39389872017-01-19 21:10:49 -070010028 struct PhysicalDeviceFeatures2KHR
10029 {
10030 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10031 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10032 , pNext( nullptr )
10033 , features( features_ )
10034 {
10035 }
10036
10037 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10038 {
10039 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
10040 }
10041
10042 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10043 {
10044 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
10045 return *this;
10046 }
10047
Mark Young39389872017-01-19 21:10:49 -070010048 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10049 {
10050 pNext = pNext_;
10051 return *this;
10052 }
10053
10054 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10055 {
10056 features = features_;
10057 return *this;
10058 }
10059
10060 operator const VkPhysicalDeviceFeatures2KHR&() const
10061 {
10062 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10063 }
10064
10065 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10066 {
10067 return ( sType == rhs.sType )
10068 && ( pNext == rhs.pNext )
10069 && ( features == rhs.features );
10070 }
10071
10072 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10073 {
10074 return !operator==( rhs );
10075 }
10076
10077 private:
10078 StructureType sType;
10079
10080 public:
10081 void* pNext;
10082 PhysicalDeviceFeatures features;
10083 };
10084 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10085
Mark Young0f183a82017-02-28 09:58:04 -070010086 struct PhysicalDevicePushDescriptorPropertiesKHR
10087 {
10088 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10089 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10090 , pNext( nullptr )
10091 , maxPushDescriptors( maxPushDescriptors_ )
10092 {
10093 }
10094
10095 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10096 {
10097 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
10098 }
10099
10100 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10101 {
10102 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
10103 return *this;
10104 }
10105
10106 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10107 {
10108 pNext = pNext_;
10109 return *this;
10110 }
10111
10112 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10113 {
10114 maxPushDescriptors = maxPushDescriptors_;
10115 return *this;
10116 }
10117
10118 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10119 {
10120 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10121 }
10122
10123 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10124 {
10125 return ( sType == rhs.sType )
10126 && ( pNext == rhs.pNext )
10127 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10128 }
10129
10130 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10131 {
10132 return !operator==( rhs );
10133 }
10134
10135 private:
10136 StructureType sType;
10137
10138 public:
10139 void* pNext;
10140 uint32_t maxPushDescriptors;
10141 };
10142 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10143
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010144 struct PresentRegionsKHR
10145 {
10146 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10147 : sType( StructureType::ePresentRegionsKHR )
10148 , pNext( nullptr )
10149 , swapchainCount( swapchainCount_ )
10150 , pRegions( pRegions_ )
10151 {
10152 }
10153
10154 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10155 {
10156 memcpy( this, &rhs, sizeof(PresentRegionsKHR) );
10157 }
10158
10159 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10160 {
10161 memcpy( this, &rhs, sizeof(PresentRegionsKHR) );
10162 return *this;
10163 }
10164
10165 PresentRegionsKHR& setPNext( const void* pNext_ )
10166 {
10167 pNext = pNext_;
10168 return *this;
10169 }
10170
10171 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10172 {
10173 swapchainCount = swapchainCount_;
10174 return *this;
10175 }
10176
10177 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10178 {
10179 pRegions = pRegions_;
10180 return *this;
10181 }
10182
10183 operator const VkPresentRegionsKHR&() const
10184 {
10185 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10186 }
10187
10188 bool operator==( PresentRegionsKHR const& rhs ) const
10189 {
10190 return ( sType == rhs.sType )
10191 && ( pNext == rhs.pNext )
10192 && ( swapchainCount == rhs.swapchainCount )
10193 && ( pRegions == rhs.pRegions );
10194 }
10195
10196 bool operator!=( PresentRegionsKHR const& rhs ) const
10197 {
10198 return !operator==( rhs );
10199 }
10200
10201 private:
10202 StructureType sType;
10203
10204 public:
10205 const void* pNext;
10206 uint32_t swapchainCount;
10207 const PresentRegionKHR* pRegions;
10208 };
10209 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10210
Mark Young0f183a82017-02-28 09:58:04 -070010211 struct PhysicalDeviceIDPropertiesKHX
10212 {
10213 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10214 {
10215 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10216 }
10217
10218 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10219 {
10220 return ( sType == rhs.sType )
10221 && ( pNext == rhs.pNext )
10222 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10223 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10224 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10225 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10226 }
10227
10228 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10229 {
10230 return !operator==( rhs );
10231 }
10232
10233 private:
10234 StructureType sType;
10235
10236 public:
10237 void* pNext;
10238 uint8_t deviceUUID[VK_UUID_SIZE];
10239 uint8_t driverUUID[VK_UUID_SIZE];
10240 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10241 Bool32 deviceLUIDValid;
10242 };
10243 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10244
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010245#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010246 struct ExportMemoryWin32HandleInfoKHX
10247 {
10248 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10249 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10250 , pNext( nullptr )
10251 , pAttributes( pAttributes_ )
10252 , dwAccess( dwAccess_ )
10253 , name( name_ )
10254 {
10255 }
10256
10257 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10258 {
10259 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10260 }
10261
10262 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10263 {
10264 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10265 return *this;
10266 }
10267
10268 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10269 {
10270 pNext = pNext_;
10271 return *this;
10272 }
10273
10274 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10275 {
10276 pAttributes = pAttributes_;
10277 return *this;
10278 }
10279
10280 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10281 {
10282 dwAccess = dwAccess_;
10283 return *this;
10284 }
10285
10286 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10287 {
10288 name = name_;
10289 return *this;
10290 }
10291
10292 operator const VkExportMemoryWin32HandleInfoKHX&() const
10293 {
10294 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10295 }
10296
10297 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10298 {
10299 return ( sType == rhs.sType )
10300 && ( pNext == rhs.pNext )
10301 && ( pAttributes == rhs.pAttributes )
10302 && ( dwAccess == rhs.dwAccess )
10303 && ( name == rhs.name );
10304 }
10305
10306 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10307 {
10308 return !operator==( rhs );
10309 }
10310
10311 private:
10312 StructureType sType;
10313
10314 public:
10315 const void* pNext;
10316 const SECURITY_ATTRIBUTES* pAttributes;
10317 DWORD dwAccess;
10318 LPCWSTR name;
10319 };
10320 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010321#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010322
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010323#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010324 struct MemoryWin32HandlePropertiesKHX
10325 {
10326 operator const VkMemoryWin32HandlePropertiesKHX&() const
10327 {
10328 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10329 }
10330
10331 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10332 {
10333 return ( sType == rhs.sType )
10334 && ( pNext == rhs.pNext )
10335 && ( memoryTypeBits == rhs.memoryTypeBits );
10336 }
10337
10338 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10339 {
10340 return !operator==( rhs );
10341 }
10342
10343 private:
10344 StructureType sType;
10345
10346 public:
10347 void* pNext;
10348 uint32_t memoryTypeBits;
10349 };
10350 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010351#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010352
10353 struct MemoryFdPropertiesKHX
10354 {
10355 operator const VkMemoryFdPropertiesKHX&() const
10356 {
10357 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10358 }
10359
10360 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10361 {
10362 return ( sType == rhs.sType )
10363 && ( pNext == rhs.pNext )
10364 && ( memoryTypeBits == rhs.memoryTypeBits );
10365 }
10366
10367 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10368 {
10369 return !operator==( rhs );
10370 }
10371
10372 private:
10373 StructureType sType;
10374
10375 public:
10376 void* pNext;
10377 uint32_t memoryTypeBits;
10378 };
10379 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10380
10381#ifdef VK_USE_PLATFORM_WIN32_KHR
10382 struct Win32KeyedMutexAcquireReleaseInfoKHX
10383 {
10384 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 )
10385 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10386 , pNext( nullptr )
10387 , acquireCount( acquireCount_ )
10388 , pAcquireSyncs( pAcquireSyncs_ )
10389 , pAcquireKeys( pAcquireKeys_ )
10390 , pAcquireTimeouts( pAcquireTimeouts_ )
10391 , releaseCount( releaseCount_ )
10392 , pReleaseSyncs( pReleaseSyncs_ )
10393 , pReleaseKeys( pReleaseKeys_ )
10394 {
10395 }
10396
10397 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10398 {
10399 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10400 }
10401
10402 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10403 {
10404 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10405 return *this;
10406 }
10407
10408 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10409 {
10410 pNext = pNext_;
10411 return *this;
10412 }
10413
10414 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10415 {
10416 acquireCount = acquireCount_;
10417 return *this;
10418 }
10419
10420 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10421 {
10422 pAcquireSyncs = pAcquireSyncs_;
10423 return *this;
10424 }
10425
10426 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10427 {
10428 pAcquireKeys = pAcquireKeys_;
10429 return *this;
10430 }
10431
10432 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10433 {
10434 pAcquireTimeouts = pAcquireTimeouts_;
10435 return *this;
10436 }
10437
10438 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10439 {
10440 releaseCount = releaseCount_;
10441 return *this;
10442 }
10443
10444 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10445 {
10446 pReleaseSyncs = pReleaseSyncs_;
10447 return *this;
10448 }
10449
10450 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10451 {
10452 pReleaseKeys = pReleaseKeys_;
10453 return *this;
10454 }
10455
10456 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10457 {
10458 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10459 }
10460
10461 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10462 {
10463 return ( sType == rhs.sType )
10464 && ( pNext == rhs.pNext )
10465 && ( acquireCount == rhs.acquireCount )
10466 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10467 && ( pAcquireKeys == rhs.pAcquireKeys )
10468 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10469 && ( releaseCount == rhs.releaseCount )
10470 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10471 && ( pReleaseKeys == rhs.pReleaseKeys );
10472 }
10473
10474 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10475 {
10476 return !operator==( rhs );
10477 }
10478
10479 private:
10480 StructureType sType;
10481
10482 public:
10483 const void* pNext;
10484 uint32_t acquireCount;
10485 const DeviceMemory* pAcquireSyncs;
10486 const uint64_t* pAcquireKeys;
10487 const uint32_t* pAcquireTimeouts;
10488 uint32_t releaseCount;
10489 const DeviceMemory* pReleaseSyncs;
10490 const uint64_t* pReleaseKeys;
10491 };
10492 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10493#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10494
10495#ifdef VK_USE_PLATFORM_WIN32_KHX
10496 struct ExportSemaphoreWin32HandleInfoKHX
10497 {
10498 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10499 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10500 , pNext( nullptr )
10501 , pAttributes( pAttributes_ )
10502 , dwAccess( dwAccess_ )
10503 , name( name_ )
10504 {
10505 }
10506
10507 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10508 {
10509 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10510 }
10511
10512 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10513 {
10514 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10515 return *this;
10516 }
10517
10518 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10519 {
10520 pNext = pNext_;
10521 return *this;
10522 }
10523
10524 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10525 {
10526 pAttributes = pAttributes_;
10527 return *this;
10528 }
10529
10530 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10531 {
10532 dwAccess = dwAccess_;
10533 return *this;
10534 }
10535
10536 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10537 {
10538 name = name_;
10539 return *this;
10540 }
10541
10542 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10543 {
10544 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10545 }
10546
10547 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10548 {
10549 return ( sType == rhs.sType )
10550 && ( pNext == rhs.pNext )
10551 && ( pAttributes == rhs.pAttributes )
10552 && ( dwAccess == rhs.dwAccess )
10553 && ( name == rhs.name );
10554 }
10555
10556 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10557 {
10558 return !operator==( rhs );
10559 }
10560
10561 private:
10562 StructureType sType;
10563
10564 public:
10565 const void* pNext;
10566 const SECURITY_ATTRIBUTES* pAttributes;
10567 DWORD dwAccess;
10568 LPCWSTR name;
10569 };
10570 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10571#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10572
10573#ifdef VK_USE_PLATFORM_WIN32_KHX
10574 struct D3D12FenceSubmitInfoKHX
10575 {
10576 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10577 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10578 , pNext( nullptr )
10579 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10580 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10581 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10582 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10583 {
10584 }
10585
10586 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10587 {
10588 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10589 }
10590
10591 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10592 {
10593 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10594 return *this;
10595 }
10596
10597 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10598 {
10599 pNext = pNext_;
10600 return *this;
10601 }
10602
10603 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10604 {
10605 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10606 return *this;
10607 }
10608
10609 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10610 {
10611 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10612 return *this;
10613 }
10614
10615 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10616 {
10617 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10618 return *this;
10619 }
10620
10621 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10622 {
10623 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10624 return *this;
10625 }
10626
10627 operator const VkD3D12FenceSubmitInfoKHX&() const
10628 {
10629 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10630 }
10631
10632 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10633 {
10634 return ( sType == rhs.sType )
10635 && ( pNext == rhs.pNext )
10636 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10637 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10638 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10639 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10640 }
10641
10642 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10643 {
10644 return !operator==( rhs );
10645 }
10646
10647 private:
10648 StructureType sType;
10649
10650 public:
10651 const void* pNext;
10652 uint32_t waitSemaphoreValuesCount;
10653 const uint64_t* pWaitSemaphoreValues;
10654 uint32_t signalSemaphoreValuesCount;
10655 const uint64_t* pSignalSemaphoreValues;
10656 };
10657 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10658#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10659
10660 struct PhysicalDeviceMultiviewFeaturesKHX
10661 {
10662 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10663 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10664 , pNext( nullptr )
10665 , multiview( multiview_ )
10666 , multiviewGeometryShader( multiviewGeometryShader_ )
10667 , multiviewTessellationShader( multiviewTessellationShader_ )
10668 {
10669 }
10670
10671 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10672 {
10673 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10674 }
10675
10676 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10677 {
10678 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10679 return *this;
10680 }
10681
10682 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10683 {
10684 pNext = pNext_;
10685 return *this;
10686 }
10687
10688 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10689 {
10690 multiview = multiview_;
10691 return *this;
10692 }
10693
10694 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10695 {
10696 multiviewGeometryShader = multiviewGeometryShader_;
10697 return *this;
10698 }
10699
10700 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10701 {
10702 multiviewTessellationShader = multiviewTessellationShader_;
10703 return *this;
10704 }
10705
10706 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10707 {
10708 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10709 }
10710
10711 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10712 {
10713 return ( sType == rhs.sType )
10714 && ( pNext == rhs.pNext )
10715 && ( multiview == rhs.multiview )
10716 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10717 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10718 }
10719
10720 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10721 {
10722 return !operator==( rhs );
10723 }
10724
10725 private:
10726 StructureType sType;
10727
10728 public:
10729 void* pNext;
10730 Bool32 multiview;
10731 Bool32 multiviewGeometryShader;
10732 Bool32 multiviewTessellationShader;
10733 };
10734 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10735
10736 struct PhysicalDeviceMultiviewPropertiesKHX
10737 {
10738 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10739 {
10740 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10741 }
10742
10743 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10744 {
10745 return ( sType == rhs.sType )
10746 && ( pNext == rhs.pNext )
10747 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10748 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10749 }
10750
10751 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10752 {
10753 return !operator==( rhs );
10754 }
10755
10756 private:
10757 StructureType sType;
10758
10759 public:
10760 void* pNext;
10761 uint32_t maxMultiviewViewCount;
10762 uint32_t maxMultiviewInstanceIndex;
10763 };
10764 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10765
10766 struct RenderPassMultiviewCreateInfoKHX
10767 {
10768 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 )
10769 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10770 , pNext( nullptr )
10771 , subpassCount( subpassCount_ )
10772 , pViewMasks( pViewMasks_ )
10773 , dependencyCount( dependencyCount_ )
10774 , pViewOffsets( pViewOffsets_ )
10775 , correlationMaskCount( correlationMaskCount_ )
10776 , pCorrelationMasks( pCorrelationMasks_ )
10777 {
10778 }
10779
10780 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10781 {
10782 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10783 }
10784
10785 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10786 {
10787 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10788 return *this;
10789 }
10790
10791 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10792 {
10793 pNext = pNext_;
10794 return *this;
10795 }
10796
10797 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10798 {
10799 subpassCount = subpassCount_;
10800 return *this;
10801 }
10802
10803 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10804 {
10805 pViewMasks = pViewMasks_;
10806 return *this;
10807 }
10808
10809 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10810 {
10811 dependencyCount = dependencyCount_;
10812 return *this;
10813 }
10814
10815 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10816 {
10817 pViewOffsets = pViewOffsets_;
10818 return *this;
10819 }
10820
10821 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10822 {
10823 correlationMaskCount = correlationMaskCount_;
10824 return *this;
10825 }
10826
10827 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10828 {
10829 pCorrelationMasks = pCorrelationMasks_;
10830 return *this;
10831 }
10832
10833 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10834 {
10835 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10836 }
10837
10838 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10839 {
10840 return ( sType == rhs.sType )
10841 && ( pNext == rhs.pNext )
10842 && ( subpassCount == rhs.subpassCount )
10843 && ( pViewMasks == rhs.pViewMasks )
10844 && ( dependencyCount == rhs.dependencyCount )
10845 && ( pViewOffsets == rhs.pViewOffsets )
10846 && ( correlationMaskCount == rhs.correlationMaskCount )
10847 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10848 }
10849
10850 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10851 {
10852 return !operator==( rhs );
10853 }
10854
10855 private:
10856 StructureType sType;
10857
10858 public:
10859 const void* pNext;
10860 uint32_t subpassCount;
10861 const uint32_t* pViewMasks;
10862 uint32_t dependencyCount;
10863 const int32_t* pViewOffsets;
10864 uint32_t correlationMaskCount;
10865 const uint32_t* pCorrelationMasks;
10866 };
10867 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10868
10869 struct BindBufferMemoryInfoKHX
10870 {
10871 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10872 : sType( StructureType::eBindBufferMemoryInfoKHX )
10873 , pNext( nullptr )
10874 , buffer( buffer_ )
10875 , memory( memory_ )
10876 , memoryOffset( memoryOffset_ )
10877 , deviceIndexCount( deviceIndexCount_ )
10878 , pDeviceIndices( pDeviceIndices_ )
10879 {
10880 }
10881
10882 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10883 {
10884 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10885 }
10886
10887 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10888 {
10889 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10890 return *this;
10891 }
10892
10893 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10894 {
10895 pNext = pNext_;
10896 return *this;
10897 }
10898
10899 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10900 {
10901 buffer = buffer_;
10902 return *this;
10903 }
10904
10905 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10906 {
10907 memory = memory_;
10908 return *this;
10909 }
10910
10911 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10912 {
10913 memoryOffset = memoryOffset_;
10914 return *this;
10915 }
10916
10917 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10918 {
10919 deviceIndexCount = deviceIndexCount_;
10920 return *this;
10921 }
10922
10923 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10924 {
10925 pDeviceIndices = pDeviceIndices_;
10926 return *this;
10927 }
10928
10929 operator const VkBindBufferMemoryInfoKHX&() const
10930 {
10931 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10932 }
10933
10934 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10935 {
10936 return ( sType == rhs.sType )
10937 && ( pNext == rhs.pNext )
10938 && ( buffer == rhs.buffer )
10939 && ( memory == rhs.memory )
10940 && ( memoryOffset == rhs.memoryOffset )
10941 && ( deviceIndexCount == rhs.deviceIndexCount )
10942 && ( pDeviceIndices == rhs.pDeviceIndices );
10943 }
10944
10945 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10946 {
10947 return !operator==( rhs );
10948 }
10949
10950 private:
10951 StructureType sType;
10952
10953 public:
10954 const void* pNext;
10955 Buffer buffer;
10956 DeviceMemory memory;
10957 DeviceSize memoryOffset;
10958 uint32_t deviceIndexCount;
10959 const uint32_t* pDeviceIndices;
10960 };
10961 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
10962
10963 struct BindImageMemoryInfoKHX
10964 {
10965 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 )
10966 : sType( StructureType::eBindImageMemoryInfoKHX )
10967 , pNext( nullptr )
10968 , image( image_ )
10969 , memory( memory_ )
10970 , memoryOffset( memoryOffset_ )
10971 , deviceIndexCount( deviceIndexCount_ )
10972 , pDeviceIndices( pDeviceIndices_ )
10973 , SFRRectCount( SFRRectCount_ )
10974 , pSFRRects( pSFRRects_ )
10975 {
10976 }
10977
10978 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
10979 {
10980 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10981 }
10982
10983 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
10984 {
10985 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10986 return *this;
10987 }
10988
10989 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
10990 {
10991 pNext = pNext_;
10992 return *this;
10993 }
10994
10995 BindImageMemoryInfoKHX& setImage( Image image_ )
10996 {
10997 image = image_;
10998 return *this;
10999 }
11000
11001 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11002 {
11003 memory = memory_;
11004 return *this;
11005 }
11006
11007 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11008 {
11009 memoryOffset = memoryOffset_;
11010 return *this;
11011 }
11012
11013 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11014 {
11015 deviceIndexCount = deviceIndexCount_;
11016 return *this;
11017 }
11018
11019 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11020 {
11021 pDeviceIndices = pDeviceIndices_;
11022 return *this;
11023 }
11024
11025 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11026 {
11027 SFRRectCount = SFRRectCount_;
11028 return *this;
11029 }
11030
11031 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11032 {
11033 pSFRRects = pSFRRects_;
11034 return *this;
11035 }
11036
11037 operator const VkBindImageMemoryInfoKHX&() const
11038 {
11039 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11040 }
11041
11042 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11043 {
11044 return ( sType == rhs.sType )
11045 && ( pNext == rhs.pNext )
11046 && ( image == rhs.image )
11047 && ( memory == rhs.memory )
11048 && ( memoryOffset == rhs.memoryOffset )
11049 && ( deviceIndexCount == rhs.deviceIndexCount )
11050 && ( pDeviceIndices == rhs.pDeviceIndices )
11051 && ( SFRRectCount == rhs.SFRRectCount )
11052 && ( pSFRRects == rhs.pSFRRects );
11053 }
11054
11055 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11056 {
11057 return !operator==( rhs );
11058 }
11059
11060 private:
11061 StructureType sType;
11062
11063 public:
11064 const void* pNext;
11065 Image image;
11066 DeviceMemory memory;
11067 DeviceSize memoryOffset;
11068 uint32_t deviceIndexCount;
11069 const uint32_t* pDeviceIndices;
11070 uint32_t SFRRectCount;
11071 const Rect2D* pSFRRects;
11072 };
11073 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11074
11075 struct DeviceGroupRenderPassBeginInfoKHX
11076 {
11077 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11078 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11079 , pNext( nullptr )
11080 , deviceMask( deviceMask_ )
11081 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11082 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11083 {
11084 }
11085
11086 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11087 {
11088 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
11089 }
11090
11091 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11092 {
11093 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
11094 return *this;
11095 }
11096
11097 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11098 {
11099 pNext = pNext_;
11100 return *this;
11101 }
11102
11103 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11104 {
11105 deviceMask = deviceMask_;
11106 return *this;
11107 }
11108
11109 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11110 {
11111 deviceRenderAreaCount = deviceRenderAreaCount_;
11112 return *this;
11113 }
11114
11115 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11116 {
11117 pDeviceRenderAreas = pDeviceRenderAreas_;
11118 return *this;
11119 }
11120
11121 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11122 {
11123 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11124 }
11125
11126 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11127 {
11128 return ( sType == rhs.sType )
11129 && ( pNext == rhs.pNext )
11130 && ( deviceMask == rhs.deviceMask )
11131 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11132 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11133 }
11134
11135 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11136 {
11137 return !operator==( rhs );
11138 }
11139
11140 private:
11141 StructureType sType;
11142
11143 public:
11144 const void* pNext;
11145 uint32_t deviceMask;
11146 uint32_t deviceRenderAreaCount;
11147 const Rect2D* pDeviceRenderAreas;
11148 };
11149 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11150
11151 struct DeviceGroupCommandBufferBeginInfoKHX
11152 {
11153 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11154 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11155 , pNext( nullptr )
11156 , deviceMask( deviceMask_ )
11157 {
11158 }
11159
11160 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11161 {
11162 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
11163 }
11164
11165 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11166 {
11167 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
11168 return *this;
11169 }
11170
11171 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11172 {
11173 pNext = pNext_;
11174 return *this;
11175 }
11176
11177 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11178 {
11179 deviceMask = deviceMask_;
11180 return *this;
11181 }
11182
11183 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11184 {
11185 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11186 }
11187
11188 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11189 {
11190 return ( sType == rhs.sType )
11191 && ( pNext == rhs.pNext )
11192 && ( deviceMask == rhs.deviceMask );
11193 }
11194
11195 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11196 {
11197 return !operator==( rhs );
11198 }
11199
11200 private:
11201 StructureType sType;
11202
11203 public:
11204 const void* pNext;
11205 uint32_t deviceMask;
11206 };
11207 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11208
11209 struct DeviceGroupSubmitInfoKHX
11210 {
11211 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 )
11212 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11213 , pNext( nullptr )
11214 , waitSemaphoreCount( waitSemaphoreCount_ )
11215 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11216 , commandBufferCount( commandBufferCount_ )
11217 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11218 , signalSemaphoreCount( signalSemaphoreCount_ )
11219 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11220 {
11221 }
11222
11223 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11224 {
11225 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11226 }
11227
11228 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11229 {
11230 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11231 return *this;
11232 }
11233
11234 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11235 {
11236 pNext = pNext_;
11237 return *this;
11238 }
11239
11240 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11241 {
11242 waitSemaphoreCount = waitSemaphoreCount_;
11243 return *this;
11244 }
11245
11246 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11247 {
11248 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11249 return *this;
11250 }
11251
11252 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11253 {
11254 commandBufferCount = commandBufferCount_;
11255 return *this;
11256 }
11257
11258 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11259 {
11260 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11261 return *this;
11262 }
11263
11264 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11265 {
11266 signalSemaphoreCount = signalSemaphoreCount_;
11267 return *this;
11268 }
11269
11270 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11271 {
11272 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11273 return *this;
11274 }
11275
11276 operator const VkDeviceGroupSubmitInfoKHX&() const
11277 {
11278 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11279 }
11280
11281 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11282 {
11283 return ( sType == rhs.sType )
11284 && ( pNext == rhs.pNext )
11285 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11286 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11287 && ( commandBufferCount == rhs.commandBufferCount )
11288 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11289 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11290 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11291 }
11292
11293 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11294 {
11295 return !operator==( rhs );
11296 }
11297
11298 private:
11299 StructureType sType;
11300
11301 public:
11302 const void* pNext;
11303 uint32_t waitSemaphoreCount;
11304 const uint32_t* pWaitSemaphoreDeviceIndices;
11305 uint32_t commandBufferCount;
11306 const uint32_t* pCommandBufferDeviceMasks;
11307 uint32_t signalSemaphoreCount;
11308 const uint32_t* pSignalSemaphoreDeviceIndices;
11309 };
11310 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11311
11312 struct DeviceGroupBindSparseInfoKHX
11313 {
11314 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11315 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11316 , pNext( nullptr )
11317 , resourceDeviceIndex( resourceDeviceIndex_ )
11318 , memoryDeviceIndex( memoryDeviceIndex_ )
11319 {
11320 }
11321
11322 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11323 {
11324 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11325 }
11326
11327 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11328 {
11329 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11330 return *this;
11331 }
11332
11333 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11334 {
11335 pNext = pNext_;
11336 return *this;
11337 }
11338
11339 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11340 {
11341 resourceDeviceIndex = resourceDeviceIndex_;
11342 return *this;
11343 }
11344
11345 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11346 {
11347 memoryDeviceIndex = memoryDeviceIndex_;
11348 return *this;
11349 }
11350
11351 operator const VkDeviceGroupBindSparseInfoKHX&() const
11352 {
11353 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11354 }
11355
11356 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11357 {
11358 return ( sType == rhs.sType )
11359 && ( pNext == rhs.pNext )
11360 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11361 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11362 }
11363
11364 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11365 {
11366 return !operator==( rhs );
11367 }
11368
11369 private:
11370 StructureType sType;
11371
11372 public:
11373 const void* pNext;
11374 uint32_t resourceDeviceIndex;
11375 uint32_t memoryDeviceIndex;
11376 };
11377 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11378
11379 struct ImageSwapchainCreateInfoKHX
11380 {
11381 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11382 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11383 , pNext( nullptr )
11384 , swapchain( swapchain_ )
11385 {
11386 }
11387
11388 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11389 {
11390 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11391 }
11392
11393 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11394 {
11395 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11396 return *this;
11397 }
11398
11399 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11400 {
11401 pNext = pNext_;
11402 return *this;
11403 }
11404
11405 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11406 {
11407 swapchain = swapchain_;
11408 return *this;
11409 }
11410
11411 operator const VkImageSwapchainCreateInfoKHX&() const
11412 {
11413 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11414 }
11415
11416 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11417 {
11418 return ( sType == rhs.sType )
11419 && ( pNext == rhs.pNext )
11420 && ( swapchain == rhs.swapchain );
11421 }
11422
11423 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11424 {
11425 return !operator==( rhs );
11426 }
11427
11428 private:
11429 StructureType sType;
11430
11431 public:
11432 const void* pNext;
11433 SwapchainKHR swapchain;
11434 };
11435 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11436
11437 struct BindImageMemorySwapchainInfoKHX
11438 {
11439 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11440 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11441 , pNext( nullptr )
11442 , swapchain( swapchain_ )
11443 , imageIndex( imageIndex_ )
11444 {
11445 }
11446
11447 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11448 {
11449 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11450 }
11451
11452 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11453 {
11454 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11455 return *this;
11456 }
11457
11458 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11459 {
11460 pNext = pNext_;
11461 return *this;
11462 }
11463
11464 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11465 {
11466 swapchain = swapchain_;
11467 return *this;
11468 }
11469
11470 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11471 {
11472 imageIndex = imageIndex_;
11473 return *this;
11474 }
11475
11476 operator const VkBindImageMemorySwapchainInfoKHX&() const
11477 {
11478 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11479 }
11480
11481 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11482 {
11483 return ( sType == rhs.sType )
11484 && ( pNext == rhs.pNext )
11485 && ( swapchain == rhs.swapchain )
11486 && ( imageIndex == rhs.imageIndex );
11487 }
11488
11489 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11490 {
11491 return !operator==( rhs );
11492 }
11493
11494 private:
11495 StructureType sType;
11496
11497 public:
11498 const void* pNext;
11499 SwapchainKHR swapchain;
11500 uint32_t imageIndex;
11501 };
11502 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11503
11504 struct AcquireNextImageInfoKHX
11505 {
11506 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11507 : sType( StructureType::eAcquireNextImageInfoKHX )
11508 , pNext( nullptr )
11509 , swapchain( swapchain_ )
11510 , timeout( timeout_ )
11511 , semaphore( semaphore_ )
11512 , fence( fence_ )
11513 , deviceMask( deviceMask_ )
11514 {
11515 }
11516
11517 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11518 {
11519 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11520 }
11521
11522 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11523 {
11524 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11525 return *this;
11526 }
11527
11528 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11529 {
11530 pNext = pNext_;
11531 return *this;
11532 }
11533
11534 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11535 {
11536 swapchain = swapchain_;
11537 return *this;
11538 }
11539
11540 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11541 {
11542 timeout = timeout_;
11543 return *this;
11544 }
11545
11546 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11547 {
11548 semaphore = semaphore_;
11549 return *this;
11550 }
11551
11552 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11553 {
11554 fence = fence_;
11555 return *this;
11556 }
11557
11558 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11559 {
11560 deviceMask = deviceMask_;
11561 return *this;
11562 }
11563
11564 operator const VkAcquireNextImageInfoKHX&() const
11565 {
11566 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11567 }
11568
11569 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11570 {
11571 return ( sType == rhs.sType )
11572 && ( pNext == rhs.pNext )
11573 && ( swapchain == rhs.swapchain )
11574 && ( timeout == rhs.timeout )
11575 && ( semaphore == rhs.semaphore )
11576 && ( fence == rhs.fence )
11577 && ( deviceMask == rhs.deviceMask );
11578 }
11579
11580 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11581 {
11582 return !operator==( rhs );
11583 }
11584
11585 private:
11586 StructureType sType;
11587
11588 public:
11589 const void* pNext;
11590 SwapchainKHR swapchain;
11591 uint64_t timeout;
11592 Semaphore semaphore;
11593 Fence fence;
11594 uint32_t deviceMask;
11595 };
11596 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11597
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011598 struct HdrMetadataEXT
11599 {
11600 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 )
11601 : sType( StructureType::eHdrMetadataEXT )
11602 , pNext( nullptr )
11603 , displayPrimaryRed( displayPrimaryRed_ )
11604 , displayPrimaryGreen( displayPrimaryGreen_ )
11605 , displayPrimaryBlue( displayPrimaryBlue_ )
11606 , whitePoint( whitePoint_ )
11607 , maxLuminance( maxLuminance_ )
11608 , minLuminance( minLuminance_ )
11609 , maxContentLightLevel( maxContentLightLevel_ )
11610 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11611 {
11612 }
11613
11614 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11615 {
11616 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11617 }
11618
11619 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11620 {
11621 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11622 return *this;
11623 }
11624
11625 HdrMetadataEXT& setPNext( const void* pNext_ )
11626 {
11627 pNext = pNext_;
11628 return *this;
11629 }
11630
11631 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11632 {
11633 displayPrimaryRed = displayPrimaryRed_;
11634 return *this;
11635 }
11636
11637 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11638 {
11639 displayPrimaryGreen = displayPrimaryGreen_;
11640 return *this;
11641 }
11642
11643 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11644 {
11645 displayPrimaryBlue = displayPrimaryBlue_;
11646 return *this;
11647 }
11648
11649 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11650 {
11651 whitePoint = whitePoint_;
11652 return *this;
11653 }
11654
11655 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11656 {
11657 maxLuminance = maxLuminance_;
11658 return *this;
11659 }
11660
11661 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11662 {
11663 minLuminance = minLuminance_;
11664 return *this;
11665 }
11666
11667 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11668 {
11669 maxContentLightLevel = maxContentLightLevel_;
11670 return *this;
11671 }
11672
11673 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11674 {
11675 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11676 return *this;
11677 }
11678
11679 operator const VkHdrMetadataEXT&() const
11680 {
11681 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11682 }
11683
11684 bool operator==( HdrMetadataEXT const& rhs ) const
11685 {
11686 return ( sType == rhs.sType )
11687 && ( pNext == rhs.pNext )
11688 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11689 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11690 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11691 && ( whitePoint == rhs.whitePoint )
11692 && ( maxLuminance == rhs.maxLuminance )
11693 && ( minLuminance == rhs.minLuminance )
11694 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11695 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11696 }
11697
11698 bool operator!=( HdrMetadataEXT const& rhs ) const
11699 {
11700 return !operator==( rhs );
11701 }
11702
11703 private:
11704 StructureType sType;
11705
11706 public:
11707 const void* pNext;
11708 XYColorEXT displayPrimaryRed;
11709 XYColorEXT displayPrimaryGreen;
11710 XYColorEXT displayPrimaryBlue;
11711 XYColorEXT whitePoint;
11712 float maxLuminance;
11713 float minLuminance;
11714 float maxContentLightLevel;
11715 float maxFrameAverageLightLevel;
11716 };
11717 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11718
11719 struct PresentTimesInfoGOOGLE
11720 {
11721 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11722 : sType( StructureType::ePresentTimesInfoGOOGLE )
11723 , pNext( nullptr )
11724 , swapchainCount( swapchainCount_ )
11725 , pTimes( pTimes_ )
11726 {
11727 }
11728
11729 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11730 {
11731 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11732 }
11733
11734 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11735 {
11736 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11737 return *this;
11738 }
11739
11740 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11741 {
11742 pNext = pNext_;
11743 return *this;
11744 }
11745
11746 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11747 {
11748 swapchainCount = swapchainCount_;
11749 return *this;
11750 }
11751
11752 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11753 {
11754 pTimes = pTimes_;
11755 return *this;
11756 }
11757
11758 operator const VkPresentTimesInfoGOOGLE&() const
11759 {
11760 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11761 }
11762
11763 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11764 {
11765 return ( sType == rhs.sType )
11766 && ( pNext == rhs.pNext )
11767 && ( swapchainCount == rhs.swapchainCount )
11768 && ( pTimes == rhs.pTimes );
11769 }
11770
11771 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11772 {
11773 return !operator==( rhs );
11774 }
11775
11776 private:
11777 StructureType sType;
11778
11779 public:
11780 const void* pNext;
11781 uint32_t swapchainCount;
11782 const PresentTimeGOOGLE* pTimes;
11783 };
11784 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11785
Mark Young0f183a82017-02-28 09:58:04 -070011786#ifdef VK_USE_PLATFORM_IOS_MVK
11787 struct IOSSurfaceCreateInfoMVK
11788 {
11789 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11790 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11791 , pNext( nullptr )
11792 , flags( flags_ )
11793 , pView( pView_ )
11794 {
11795 }
11796
11797 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11798 {
11799 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11800 }
11801
11802 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11803 {
11804 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11805 return *this;
11806 }
11807
11808 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11809 {
11810 pNext = pNext_;
11811 return *this;
11812 }
11813
11814 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11815 {
11816 flags = flags_;
11817 return *this;
11818 }
11819
11820 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11821 {
11822 pView = pView_;
11823 return *this;
11824 }
11825
11826 operator const VkIOSSurfaceCreateInfoMVK&() const
11827 {
11828 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11829 }
11830
11831 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11832 {
11833 return ( sType == rhs.sType )
11834 && ( pNext == rhs.pNext )
11835 && ( flags == rhs.flags )
11836 && ( pView == rhs.pView );
11837 }
11838
11839 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11840 {
11841 return !operator==( rhs );
11842 }
11843
11844 private:
11845 StructureType sType;
11846
11847 public:
11848 const void* pNext;
11849 IOSSurfaceCreateFlagsMVK flags;
11850 const void* pView;
11851 };
11852 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11853#endif /*VK_USE_PLATFORM_IOS_MVK*/
11854
11855#ifdef VK_USE_PLATFORM_MACOS_MVK
11856 struct MacOSSurfaceCreateInfoMVK
11857 {
11858 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11859 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11860 , pNext( nullptr )
11861 , flags( flags_ )
11862 , pView( pView_ )
11863 {
11864 }
11865
11866 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11867 {
11868 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11869 }
11870
11871 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11872 {
11873 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11874 return *this;
11875 }
11876
11877 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11878 {
11879 pNext = pNext_;
11880 return *this;
11881 }
11882
11883 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11884 {
11885 flags = flags_;
11886 return *this;
11887 }
11888
11889 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11890 {
11891 pView = pView_;
11892 return *this;
11893 }
11894
11895 operator const VkMacOSSurfaceCreateInfoMVK&() const
11896 {
11897 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11898 }
11899
11900 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11901 {
11902 return ( sType == rhs.sType )
11903 && ( pNext == rhs.pNext )
11904 && ( flags == rhs.flags )
11905 && ( pView == rhs.pView );
11906 }
11907
11908 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11909 {
11910 return !operator==( rhs );
11911 }
11912
11913 private:
11914 StructureType sType;
11915
11916 public:
11917 const void* pNext;
11918 MacOSSurfaceCreateFlagsMVK flags;
11919 const void* pView;
11920 };
11921 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11922#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11923
11924 struct PipelineViewportWScalingStateCreateInfoNV
11925 {
11926 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11927 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11928 , pNext( nullptr )
11929 , viewportWScalingEnable( viewportWScalingEnable_ )
11930 , viewportCount( viewportCount_ )
11931 , pViewportWScalings( pViewportWScalings_ )
11932 {
11933 }
11934
11935 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11936 {
11937 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11938 }
11939
11940 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11941 {
11942 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11943 return *this;
11944 }
11945
11946 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11947 {
11948 pNext = pNext_;
11949 return *this;
11950 }
11951
11952 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11953 {
11954 viewportWScalingEnable = viewportWScalingEnable_;
11955 return *this;
11956 }
11957
11958 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11959 {
11960 viewportCount = viewportCount_;
11961 return *this;
11962 }
11963
11964 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11965 {
11966 pViewportWScalings = pViewportWScalings_;
11967 return *this;
11968 }
11969
11970 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11971 {
11972 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11973 }
11974
11975 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11976 {
11977 return ( sType == rhs.sType )
11978 && ( pNext == rhs.pNext )
11979 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
11980 && ( viewportCount == rhs.viewportCount )
11981 && ( pViewportWScalings == rhs.pViewportWScalings );
11982 }
11983
11984 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11985 {
11986 return !operator==( rhs );
11987 }
11988
11989 private:
11990 StructureType sType;
11991
11992 public:
11993 const void* pNext;
11994 Bool32 viewportWScalingEnable;
11995 uint32_t viewportCount;
11996 const ViewportWScalingNV* pViewportWScalings;
11997 };
11998 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
11999
12000 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12001 {
12002 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12003 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12004 , pNext( nullptr )
12005 , maxDiscardRectangles( maxDiscardRectangles_ )
12006 {
12007 }
12008
12009 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12010 {
12011 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
12012 }
12013
12014 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12015 {
12016 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
12017 return *this;
12018 }
12019
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012020 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012021 {
12022 pNext = pNext_;
12023 return *this;
12024 }
12025
12026 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12027 {
12028 maxDiscardRectangles = maxDiscardRectangles_;
12029 return *this;
12030 }
12031
12032 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12033 {
12034 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12035 }
12036
12037 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12038 {
12039 return ( sType == rhs.sType )
12040 && ( pNext == rhs.pNext )
12041 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12042 }
12043
12044 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12045 {
12046 return !operator==( rhs );
12047 }
12048
12049 private:
12050 StructureType sType;
12051
12052 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012053 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012054 uint32_t maxDiscardRectangles;
12055 };
12056 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12057
12058 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12059 {
12060 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12061 {
12062 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12063 }
12064
12065 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12066 {
12067 return ( sType == rhs.sType )
12068 && ( pNext == rhs.pNext )
12069 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12070 }
12071
12072 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12073 {
12074 return !operator==( rhs );
12075 }
12076
12077 private:
12078 StructureType sType;
12079
12080 public:
12081 void* pNext;
12082 Bool32 perViewPositionAllComponents;
12083 };
12084 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12085
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012086 enum class SubpassContents
12087 {
12088 eInline = VK_SUBPASS_CONTENTS_INLINE,
12089 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
12090 };
12091
12092 struct PresentInfoKHR
12093 {
12094 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 )
12095 : sType( StructureType::ePresentInfoKHR )
12096 , pNext( nullptr )
12097 , waitSemaphoreCount( waitSemaphoreCount_ )
12098 , pWaitSemaphores( pWaitSemaphores_ )
12099 , swapchainCount( swapchainCount_ )
12100 , pSwapchains( pSwapchains_ )
12101 , pImageIndices( pImageIndices_ )
12102 , pResults( pResults_ )
12103 {
12104 }
12105
12106 PresentInfoKHR( VkPresentInfoKHR const & rhs )
12107 {
12108 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
12109 }
12110
12111 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
12112 {
12113 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
12114 return *this;
12115 }
12116
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012117 PresentInfoKHR& setPNext( const void* pNext_ )
12118 {
12119 pNext = pNext_;
12120 return *this;
12121 }
12122
12123 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
12124 {
12125 waitSemaphoreCount = waitSemaphoreCount_;
12126 return *this;
12127 }
12128
12129 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
12130 {
12131 pWaitSemaphores = pWaitSemaphores_;
12132 return *this;
12133 }
12134
12135 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
12136 {
12137 swapchainCount = swapchainCount_;
12138 return *this;
12139 }
12140
12141 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
12142 {
12143 pSwapchains = pSwapchains_;
12144 return *this;
12145 }
12146
12147 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
12148 {
12149 pImageIndices = pImageIndices_;
12150 return *this;
12151 }
12152
12153 PresentInfoKHR& setPResults( Result* pResults_ )
12154 {
12155 pResults = pResults_;
12156 return *this;
12157 }
12158
12159 operator const VkPresentInfoKHR&() const
12160 {
12161 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
12162 }
12163
12164 bool operator==( PresentInfoKHR const& rhs ) const
12165 {
12166 return ( sType == rhs.sType )
12167 && ( pNext == rhs.pNext )
12168 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12169 && ( pWaitSemaphores == rhs.pWaitSemaphores )
12170 && ( swapchainCount == rhs.swapchainCount )
12171 && ( pSwapchains == rhs.pSwapchains )
12172 && ( pImageIndices == rhs.pImageIndices )
12173 && ( pResults == rhs.pResults );
12174 }
12175
12176 bool operator!=( PresentInfoKHR const& rhs ) const
12177 {
12178 return !operator==( rhs );
12179 }
12180
12181 private:
12182 StructureType sType;
12183
12184 public:
12185 const void* pNext;
12186 uint32_t waitSemaphoreCount;
12187 const Semaphore* pWaitSemaphores;
12188 uint32_t swapchainCount;
12189 const SwapchainKHR* pSwapchains;
12190 const uint32_t* pImageIndices;
12191 Result* pResults;
12192 };
12193 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12194
12195 enum class DynamicState
12196 {
12197 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12198 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12199 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12200 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12201 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12202 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12203 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12204 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012205 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12206 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12207 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012208 };
12209
12210 struct PipelineDynamicStateCreateInfo
12211 {
12212 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12213 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12214 , pNext( nullptr )
12215 , flags( flags_ )
12216 , dynamicStateCount( dynamicStateCount_ )
12217 , pDynamicStates( pDynamicStates_ )
12218 {
12219 }
12220
12221 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12222 {
12223 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12224 }
12225
12226 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12227 {
12228 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12229 return *this;
12230 }
12231
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012232 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12233 {
12234 pNext = pNext_;
12235 return *this;
12236 }
12237
12238 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12239 {
12240 flags = flags_;
12241 return *this;
12242 }
12243
12244 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12245 {
12246 dynamicStateCount = dynamicStateCount_;
12247 return *this;
12248 }
12249
12250 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12251 {
12252 pDynamicStates = pDynamicStates_;
12253 return *this;
12254 }
12255
12256 operator const VkPipelineDynamicStateCreateInfo&() const
12257 {
12258 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12259 }
12260
12261 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12262 {
12263 return ( sType == rhs.sType )
12264 && ( pNext == rhs.pNext )
12265 && ( flags == rhs.flags )
12266 && ( dynamicStateCount == rhs.dynamicStateCount )
12267 && ( pDynamicStates == rhs.pDynamicStates );
12268 }
12269
12270 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12271 {
12272 return !operator==( rhs );
12273 }
12274
12275 private:
12276 StructureType sType;
12277
12278 public:
12279 const void* pNext;
12280 PipelineDynamicStateCreateFlags flags;
12281 uint32_t dynamicStateCount;
12282 const DynamicState* pDynamicStates;
12283 };
12284 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12285
Mark Young0f183a82017-02-28 09:58:04 -070012286 enum class DescriptorUpdateTemplateTypeKHR
12287 {
12288 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12289 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12290 };
12291
12292 struct DescriptorUpdateTemplateCreateInfoKHR
12293 {
12294 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 )
12295 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12296 , pNext( nullptr )
12297 , flags( flags_ )
12298 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12299 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12300 , templateType( templateType_ )
12301 , descriptorSetLayout( descriptorSetLayout_ )
12302 , pipelineBindPoint( pipelineBindPoint_ )
12303 , pipelineLayout( pipelineLayout_ )
12304 , set( set_ )
12305 {
12306 }
12307
12308 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12309 {
12310 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12311 }
12312
12313 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12314 {
12315 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12316 return *this;
12317 }
12318
12319 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12320 {
12321 pNext = pNext_;
12322 return *this;
12323 }
12324
12325 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12326 {
12327 flags = flags_;
12328 return *this;
12329 }
12330
12331 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12332 {
12333 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12334 return *this;
12335 }
12336
12337 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12338 {
12339 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12340 return *this;
12341 }
12342
12343 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12344 {
12345 templateType = templateType_;
12346 return *this;
12347 }
12348
12349 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12350 {
12351 descriptorSetLayout = descriptorSetLayout_;
12352 return *this;
12353 }
12354
12355 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12356 {
12357 pipelineBindPoint = pipelineBindPoint_;
12358 return *this;
12359 }
12360
12361 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12362 {
12363 pipelineLayout = pipelineLayout_;
12364 return *this;
12365 }
12366
12367 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12368 {
12369 set = set_;
12370 return *this;
12371 }
12372
12373 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12374 {
12375 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12376 }
12377
12378 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12379 {
12380 return ( sType == rhs.sType )
12381 && ( pNext == rhs.pNext )
12382 && ( flags == rhs.flags )
12383 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12384 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12385 && ( templateType == rhs.templateType )
12386 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12387 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12388 && ( pipelineLayout == rhs.pipelineLayout )
12389 && ( set == rhs.set );
12390 }
12391
12392 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12393 {
12394 return !operator==( rhs );
12395 }
12396
12397 private:
12398 StructureType sType;
12399
12400 public:
12401 void* pNext;
12402 DescriptorUpdateTemplateCreateFlagsKHR flags;
12403 uint32_t descriptorUpdateEntryCount;
12404 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12405 DescriptorUpdateTemplateTypeKHR templateType;
12406 DescriptorSetLayout descriptorSetLayout;
12407 PipelineBindPoint pipelineBindPoint;
12408 PipelineLayout pipelineLayout;
12409 uint32_t set;
12410 };
12411 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12412
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012413 enum class QueueFlagBits
12414 {
12415 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12416 eCompute = VK_QUEUE_COMPUTE_BIT,
12417 eTransfer = VK_QUEUE_TRANSFER_BIT,
12418 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12419 };
12420
12421 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12422
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012423 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012424 {
12425 return QueueFlags( bit0 ) | bit1;
12426 }
12427
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012428 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12429 {
12430 return ~( QueueFlags( bits ) );
12431 }
12432
12433 template <> struct FlagTraits<QueueFlagBits>
12434 {
12435 enum
12436 {
12437 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12438 };
12439 };
12440
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012441 struct QueueFamilyProperties
12442 {
12443 operator const VkQueueFamilyProperties&() const
12444 {
12445 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12446 }
12447
12448 bool operator==( QueueFamilyProperties const& rhs ) const
12449 {
12450 return ( queueFlags == rhs.queueFlags )
12451 && ( queueCount == rhs.queueCount )
12452 && ( timestampValidBits == rhs.timestampValidBits )
12453 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12454 }
12455
12456 bool operator!=( QueueFamilyProperties const& rhs ) const
12457 {
12458 return !operator==( rhs );
12459 }
12460
12461 QueueFlags queueFlags;
12462 uint32_t queueCount;
12463 uint32_t timestampValidBits;
12464 Extent3D minImageTransferGranularity;
12465 };
12466 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12467
Mark Young39389872017-01-19 21:10:49 -070012468 struct QueueFamilyProperties2KHR
12469 {
12470 operator const VkQueueFamilyProperties2KHR&() const
12471 {
12472 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12473 }
12474
12475 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12476 {
12477 return ( sType == rhs.sType )
12478 && ( pNext == rhs.pNext )
12479 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12480 }
12481
12482 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12483 {
12484 return !operator==( rhs );
12485 }
12486
12487 private:
12488 StructureType sType;
12489
12490 public:
12491 void* pNext;
12492 QueueFamilyProperties queueFamilyProperties;
12493 };
12494 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12495
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012496 enum class MemoryPropertyFlagBits
12497 {
12498 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12499 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12500 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12501 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12502 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12503 };
12504
12505 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012507 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012508 {
12509 return MemoryPropertyFlags( bit0 ) | bit1;
12510 }
12511
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012512 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12513 {
12514 return ~( MemoryPropertyFlags( bits ) );
12515 }
12516
12517 template <> struct FlagTraits<MemoryPropertyFlagBits>
12518 {
12519 enum
12520 {
12521 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12522 };
12523 };
12524
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012525 struct MemoryType
12526 {
12527 operator const VkMemoryType&() const
12528 {
12529 return *reinterpret_cast<const VkMemoryType*>(this);
12530 }
12531
12532 bool operator==( MemoryType const& rhs ) const
12533 {
12534 return ( propertyFlags == rhs.propertyFlags )
12535 && ( heapIndex == rhs.heapIndex );
12536 }
12537
12538 bool operator!=( MemoryType const& rhs ) const
12539 {
12540 return !operator==( rhs );
12541 }
12542
12543 MemoryPropertyFlags propertyFlags;
12544 uint32_t heapIndex;
12545 };
12546 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12547
12548 enum class MemoryHeapFlagBits
12549 {
Mark Young0f183a82017-02-28 09:58:04 -070012550 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12551 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012552 };
12553
12554 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12555
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012556 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012557 {
12558 return MemoryHeapFlags( bit0 ) | bit1;
12559 }
12560
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012561 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12562 {
12563 return ~( MemoryHeapFlags( bits ) );
12564 }
12565
12566 template <> struct FlagTraits<MemoryHeapFlagBits>
12567 {
12568 enum
12569 {
Mark Young0f183a82017-02-28 09:58:04 -070012570 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012571 };
12572 };
12573
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012574 struct MemoryHeap
12575 {
12576 operator const VkMemoryHeap&() const
12577 {
12578 return *reinterpret_cast<const VkMemoryHeap*>(this);
12579 }
12580
12581 bool operator==( MemoryHeap const& rhs ) const
12582 {
12583 return ( size == rhs.size )
12584 && ( flags == rhs.flags );
12585 }
12586
12587 bool operator!=( MemoryHeap const& rhs ) const
12588 {
12589 return !operator==( rhs );
12590 }
12591
12592 DeviceSize size;
12593 MemoryHeapFlags flags;
12594 };
12595 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12596
12597 struct PhysicalDeviceMemoryProperties
12598 {
12599 operator const VkPhysicalDeviceMemoryProperties&() const
12600 {
12601 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12602 }
12603
12604 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12605 {
12606 return ( memoryTypeCount == rhs.memoryTypeCount )
12607 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12608 && ( memoryHeapCount == rhs.memoryHeapCount )
12609 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12610 }
12611
12612 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12613 {
12614 return !operator==( rhs );
12615 }
12616
12617 uint32_t memoryTypeCount;
12618 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12619 uint32_t memoryHeapCount;
12620 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12621 };
12622 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12623
Mark Young39389872017-01-19 21:10:49 -070012624 struct PhysicalDeviceMemoryProperties2KHR
12625 {
12626 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12627 {
12628 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12629 }
12630
12631 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12632 {
12633 return ( sType == rhs.sType )
12634 && ( pNext == rhs.pNext )
12635 && ( memoryProperties == rhs.memoryProperties );
12636 }
12637
12638 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12639 {
12640 return !operator==( rhs );
12641 }
12642
12643 private:
12644 StructureType sType;
12645
12646 public:
12647 void* pNext;
12648 PhysicalDeviceMemoryProperties memoryProperties;
12649 };
12650 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12651
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012652 enum class AccessFlagBits
12653 {
12654 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12655 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12656 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12657 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12658 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12659 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12660 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12661 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12662 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12663 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12664 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12665 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12666 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12667 eHostRead = VK_ACCESS_HOST_READ_BIT,
12668 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12669 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012670 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12671 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12672 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012673 };
12674
12675 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12676
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012677 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012678 {
12679 return AccessFlags( bit0 ) | bit1;
12680 }
12681
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012682 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12683 {
12684 return ~( AccessFlags( bits ) );
12685 }
12686
12687 template <> struct FlagTraits<AccessFlagBits>
12688 {
12689 enum
12690 {
12691 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)
12692 };
12693 };
12694
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012695 struct MemoryBarrier
12696 {
12697 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12698 : sType( StructureType::eMemoryBarrier )
12699 , pNext( nullptr )
12700 , srcAccessMask( srcAccessMask_ )
12701 , dstAccessMask( dstAccessMask_ )
12702 {
12703 }
12704
12705 MemoryBarrier( VkMemoryBarrier const & rhs )
12706 {
12707 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12708 }
12709
12710 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12711 {
12712 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12713 return *this;
12714 }
12715
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012716 MemoryBarrier& setPNext( const void* pNext_ )
12717 {
12718 pNext = pNext_;
12719 return *this;
12720 }
12721
12722 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12723 {
12724 srcAccessMask = srcAccessMask_;
12725 return *this;
12726 }
12727
12728 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12729 {
12730 dstAccessMask = dstAccessMask_;
12731 return *this;
12732 }
12733
12734 operator const VkMemoryBarrier&() const
12735 {
12736 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12737 }
12738
12739 bool operator==( MemoryBarrier const& rhs ) const
12740 {
12741 return ( sType == rhs.sType )
12742 && ( pNext == rhs.pNext )
12743 && ( srcAccessMask == rhs.srcAccessMask )
12744 && ( dstAccessMask == rhs.dstAccessMask );
12745 }
12746
12747 bool operator!=( MemoryBarrier const& rhs ) const
12748 {
12749 return !operator==( rhs );
12750 }
12751
12752 private:
12753 StructureType sType;
12754
12755 public:
12756 const void* pNext;
12757 AccessFlags srcAccessMask;
12758 AccessFlags dstAccessMask;
12759 };
12760 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12761
12762 struct BufferMemoryBarrier
12763 {
12764 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12765 : sType( StructureType::eBufferMemoryBarrier )
12766 , pNext( nullptr )
12767 , srcAccessMask( srcAccessMask_ )
12768 , dstAccessMask( dstAccessMask_ )
12769 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12770 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12771 , buffer( buffer_ )
12772 , offset( offset_ )
12773 , size( size_ )
12774 {
12775 }
12776
12777 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12778 {
12779 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12780 }
12781
12782 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12783 {
12784 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12785 return *this;
12786 }
12787
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012788 BufferMemoryBarrier& setPNext( const void* pNext_ )
12789 {
12790 pNext = pNext_;
12791 return *this;
12792 }
12793
12794 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12795 {
12796 srcAccessMask = srcAccessMask_;
12797 return *this;
12798 }
12799
12800 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12801 {
12802 dstAccessMask = dstAccessMask_;
12803 return *this;
12804 }
12805
12806 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12807 {
12808 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12809 return *this;
12810 }
12811
12812 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12813 {
12814 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12815 return *this;
12816 }
12817
12818 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12819 {
12820 buffer = buffer_;
12821 return *this;
12822 }
12823
12824 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12825 {
12826 offset = offset_;
12827 return *this;
12828 }
12829
12830 BufferMemoryBarrier& setSize( DeviceSize size_ )
12831 {
12832 size = size_;
12833 return *this;
12834 }
12835
12836 operator const VkBufferMemoryBarrier&() const
12837 {
12838 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12839 }
12840
12841 bool operator==( BufferMemoryBarrier const& rhs ) const
12842 {
12843 return ( sType == rhs.sType )
12844 && ( pNext == rhs.pNext )
12845 && ( srcAccessMask == rhs.srcAccessMask )
12846 && ( dstAccessMask == rhs.dstAccessMask )
12847 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12848 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12849 && ( buffer == rhs.buffer )
12850 && ( offset == rhs.offset )
12851 && ( size == rhs.size );
12852 }
12853
12854 bool operator!=( BufferMemoryBarrier const& rhs ) const
12855 {
12856 return !operator==( rhs );
12857 }
12858
12859 private:
12860 StructureType sType;
12861
12862 public:
12863 const void* pNext;
12864 AccessFlags srcAccessMask;
12865 AccessFlags dstAccessMask;
12866 uint32_t srcQueueFamilyIndex;
12867 uint32_t dstQueueFamilyIndex;
12868 Buffer buffer;
12869 DeviceSize offset;
12870 DeviceSize size;
12871 };
12872 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
12873
12874 enum class BufferUsageFlagBits
12875 {
12876 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
12877 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
12878 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
12879 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
12880 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
12881 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
12882 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
12883 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
12884 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
12885 };
12886
12887 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
12888
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012889 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012890 {
12891 return BufferUsageFlags( bit0 ) | bit1;
12892 }
12893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012894 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
12895 {
12896 return ~( BufferUsageFlags( bits ) );
12897 }
12898
12899 template <> struct FlagTraits<BufferUsageFlagBits>
12900 {
12901 enum
12902 {
12903 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)
12904 };
12905 };
12906
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012907 enum class BufferCreateFlagBits
12908 {
12909 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
12910 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
12911 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
12912 };
12913
12914 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
12915
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012916 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012917 {
12918 return BufferCreateFlags( bit0 ) | bit1;
12919 }
12920
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012921 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
12922 {
12923 return ~( BufferCreateFlags( bits ) );
12924 }
12925
12926 template <> struct FlagTraits<BufferCreateFlagBits>
12927 {
12928 enum
12929 {
12930 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
12931 };
12932 };
12933
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012934 struct BufferCreateInfo
12935 {
12936 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
12937 : sType( StructureType::eBufferCreateInfo )
12938 , pNext( nullptr )
12939 , flags( flags_ )
12940 , size( size_ )
12941 , usage( usage_ )
12942 , sharingMode( sharingMode_ )
12943 , queueFamilyIndexCount( queueFamilyIndexCount_ )
12944 , pQueueFamilyIndices( pQueueFamilyIndices_ )
12945 {
12946 }
12947
12948 BufferCreateInfo( VkBufferCreateInfo const & rhs )
12949 {
12950 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12951 }
12952
12953 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
12954 {
12955 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12956 return *this;
12957 }
12958
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012959 BufferCreateInfo& setPNext( const void* pNext_ )
12960 {
12961 pNext = pNext_;
12962 return *this;
12963 }
12964
12965 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
12966 {
12967 flags = flags_;
12968 return *this;
12969 }
12970
12971 BufferCreateInfo& setSize( DeviceSize size_ )
12972 {
12973 size = size_;
12974 return *this;
12975 }
12976
12977 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
12978 {
12979 usage = usage_;
12980 return *this;
12981 }
12982
12983 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
12984 {
12985 sharingMode = sharingMode_;
12986 return *this;
12987 }
12988
12989 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
12990 {
12991 queueFamilyIndexCount = queueFamilyIndexCount_;
12992 return *this;
12993 }
12994
12995 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
12996 {
12997 pQueueFamilyIndices = pQueueFamilyIndices_;
12998 return *this;
12999 }
13000
13001 operator const VkBufferCreateInfo&() const
13002 {
13003 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13004 }
13005
13006 bool operator==( BufferCreateInfo const& rhs ) const
13007 {
13008 return ( sType == rhs.sType )
13009 && ( pNext == rhs.pNext )
13010 && ( flags == rhs.flags )
13011 && ( size == rhs.size )
13012 && ( usage == rhs.usage )
13013 && ( sharingMode == rhs.sharingMode )
13014 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13015 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13016 }
13017
13018 bool operator!=( BufferCreateInfo const& rhs ) const
13019 {
13020 return !operator==( rhs );
13021 }
13022
13023 private:
13024 StructureType sType;
13025
13026 public:
13027 const void* pNext;
13028 BufferCreateFlags flags;
13029 DeviceSize size;
13030 BufferUsageFlags usage;
13031 SharingMode sharingMode;
13032 uint32_t queueFamilyIndexCount;
13033 const uint32_t* pQueueFamilyIndices;
13034 };
13035 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13036
13037 enum class ShaderStageFlagBits
13038 {
13039 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13040 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13041 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13042 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13043 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13044 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13045 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13046 eAll = VK_SHADER_STAGE_ALL
13047 };
13048
13049 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13050
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013051 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013052 {
13053 return ShaderStageFlags( bit0 ) | bit1;
13054 }
13055
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013056 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
13057 {
13058 return ~( ShaderStageFlags( bits ) );
13059 }
13060
13061 template <> struct FlagTraits<ShaderStageFlagBits>
13062 {
13063 enum
13064 {
13065 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)
13066 };
13067 };
13068
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013069 struct DescriptorSetLayoutBinding
13070 {
13071 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
13072 : binding( binding_ )
13073 , descriptorType( descriptorType_ )
13074 , descriptorCount( descriptorCount_ )
13075 , stageFlags( stageFlags_ )
13076 , pImmutableSamplers( pImmutableSamplers_ )
13077 {
13078 }
13079
13080 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
13081 {
13082 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
13083 }
13084
13085 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
13086 {
13087 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
13088 return *this;
13089 }
13090
13091 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
13092 {
13093 binding = binding_;
13094 return *this;
13095 }
13096
13097 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
13098 {
13099 descriptorType = descriptorType_;
13100 return *this;
13101 }
13102
13103 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
13104 {
13105 descriptorCount = descriptorCount_;
13106 return *this;
13107 }
13108
13109 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
13110 {
13111 stageFlags = stageFlags_;
13112 return *this;
13113 }
13114
13115 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
13116 {
13117 pImmutableSamplers = pImmutableSamplers_;
13118 return *this;
13119 }
13120
13121 operator const VkDescriptorSetLayoutBinding&() const
13122 {
13123 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
13124 }
13125
13126 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
13127 {
13128 return ( binding == rhs.binding )
13129 && ( descriptorType == rhs.descriptorType )
13130 && ( descriptorCount == rhs.descriptorCount )
13131 && ( stageFlags == rhs.stageFlags )
13132 && ( pImmutableSamplers == rhs.pImmutableSamplers );
13133 }
13134
13135 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
13136 {
13137 return !operator==( rhs );
13138 }
13139
13140 uint32_t binding;
13141 DescriptorType descriptorType;
13142 uint32_t descriptorCount;
13143 ShaderStageFlags stageFlags;
13144 const Sampler* pImmutableSamplers;
13145 };
13146 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
13147
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013148 struct PipelineShaderStageCreateInfo
13149 {
13150 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
13151 : sType( StructureType::ePipelineShaderStageCreateInfo )
13152 , pNext( nullptr )
13153 , flags( flags_ )
13154 , stage( stage_ )
13155 , module( module_ )
13156 , pName( pName_ )
13157 , pSpecializationInfo( pSpecializationInfo_ )
13158 {
13159 }
13160
13161 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
13162 {
13163 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
13164 }
13165
13166 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
13167 {
13168 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
13169 return *this;
13170 }
13171
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013172 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
13173 {
13174 pNext = pNext_;
13175 return *this;
13176 }
13177
13178 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13179 {
13180 flags = flags_;
13181 return *this;
13182 }
13183
13184 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13185 {
13186 stage = stage_;
13187 return *this;
13188 }
13189
13190 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13191 {
13192 module = module_;
13193 return *this;
13194 }
13195
13196 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13197 {
13198 pName = pName_;
13199 return *this;
13200 }
13201
13202 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13203 {
13204 pSpecializationInfo = pSpecializationInfo_;
13205 return *this;
13206 }
13207
13208 operator const VkPipelineShaderStageCreateInfo&() const
13209 {
13210 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13211 }
13212
13213 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13214 {
13215 return ( sType == rhs.sType )
13216 && ( pNext == rhs.pNext )
13217 && ( flags == rhs.flags )
13218 && ( stage == rhs.stage )
13219 && ( module == rhs.module )
13220 && ( pName == rhs.pName )
13221 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13222 }
13223
13224 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13225 {
13226 return !operator==( rhs );
13227 }
13228
13229 private:
13230 StructureType sType;
13231
13232 public:
13233 const void* pNext;
13234 PipelineShaderStageCreateFlags flags;
13235 ShaderStageFlagBits stage;
13236 ShaderModule module;
13237 const char* pName;
13238 const SpecializationInfo* pSpecializationInfo;
13239 };
13240 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13241
13242 struct PushConstantRange
13243 {
13244 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13245 : stageFlags( stageFlags_ )
13246 , offset( offset_ )
13247 , size( size_ )
13248 {
13249 }
13250
13251 PushConstantRange( VkPushConstantRange const & rhs )
13252 {
13253 memcpy( this, &rhs, sizeof(PushConstantRange) );
13254 }
13255
13256 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13257 {
13258 memcpy( this, &rhs, sizeof(PushConstantRange) );
13259 return *this;
13260 }
13261
13262 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13263 {
13264 stageFlags = stageFlags_;
13265 return *this;
13266 }
13267
13268 PushConstantRange& setOffset( uint32_t offset_ )
13269 {
13270 offset = offset_;
13271 return *this;
13272 }
13273
13274 PushConstantRange& setSize( uint32_t size_ )
13275 {
13276 size = size_;
13277 return *this;
13278 }
13279
13280 operator const VkPushConstantRange&() const
13281 {
13282 return *reinterpret_cast<const VkPushConstantRange*>(this);
13283 }
13284
13285 bool operator==( PushConstantRange const& rhs ) const
13286 {
13287 return ( stageFlags == rhs.stageFlags )
13288 && ( offset == rhs.offset )
13289 && ( size == rhs.size );
13290 }
13291
13292 bool operator!=( PushConstantRange const& rhs ) const
13293 {
13294 return !operator==( rhs );
13295 }
13296
13297 ShaderStageFlags stageFlags;
13298 uint32_t offset;
13299 uint32_t size;
13300 };
13301 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13302
13303 struct PipelineLayoutCreateInfo
13304 {
13305 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13306 : sType( StructureType::ePipelineLayoutCreateInfo )
13307 , pNext( nullptr )
13308 , flags( flags_ )
13309 , setLayoutCount( setLayoutCount_ )
13310 , pSetLayouts( pSetLayouts_ )
13311 , pushConstantRangeCount( pushConstantRangeCount_ )
13312 , pPushConstantRanges( pPushConstantRanges_ )
13313 {
13314 }
13315
13316 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13317 {
13318 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13319 }
13320
13321 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13322 {
13323 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13324 return *this;
13325 }
13326
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013327 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13328 {
13329 pNext = pNext_;
13330 return *this;
13331 }
13332
13333 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13334 {
13335 flags = flags_;
13336 return *this;
13337 }
13338
13339 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13340 {
13341 setLayoutCount = setLayoutCount_;
13342 return *this;
13343 }
13344
13345 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13346 {
13347 pSetLayouts = pSetLayouts_;
13348 return *this;
13349 }
13350
13351 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13352 {
13353 pushConstantRangeCount = pushConstantRangeCount_;
13354 return *this;
13355 }
13356
13357 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13358 {
13359 pPushConstantRanges = pPushConstantRanges_;
13360 return *this;
13361 }
13362
13363 operator const VkPipelineLayoutCreateInfo&() const
13364 {
13365 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13366 }
13367
13368 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13369 {
13370 return ( sType == rhs.sType )
13371 && ( pNext == rhs.pNext )
13372 && ( flags == rhs.flags )
13373 && ( setLayoutCount == rhs.setLayoutCount )
13374 && ( pSetLayouts == rhs.pSetLayouts )
13375 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13376 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13377 }
13378
13379 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13380 {
13381 return !operator==( rhs );
13382 }
13383
13384 private:
13385 StructureType sType;
13386
13387 public:
13388 const void* pNext;
13389 PipelineLayoutCreateFlags flags;
13390 uint32_t setLayoutCount;
13391 const DescriptorSetLayout* pSetLayouts;
13392 uint32_t pushConstantRangeCount;
13393 const PushConstantRange* pPushConstantRanges;
13394 };
13395 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13396
13397 enum class ImageUsageFlagBits
13398 {
13399 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13400 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13401 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13402 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13403 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13404 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13405 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13406 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13407 };
13408
13409 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13410
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013411 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013412 {
13413 return ImageUsageFlags( bit0 ) | bit1;
13414 }
13415
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013416 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13417 {
13418 return ~( ImageUsageFlags( bits ) );
13419 }
13420
13421 template <> struct FlagTraits<ImageUsageFlagBits>
13422 {
13423 enum
13424 {
13425 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)
13426 };
13427 };
13428
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013429 enum class ImageCreateFlagBits
13430 {
13431 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13432 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13433 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13434 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013435 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013436 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013437 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013438 };
13439
13440 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13441
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013442 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013443 {
13444 return ImageCreateFlags( bit0 ) | bit1;
13445 }
13446
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013447 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13448 {
13449 return ~( ImageCreateFlags( bits ) );
13450 }
13451
13452 template <> struct FlagTraits<ImageCreateFlagBits>
13453 {
13454 enum
13455 {
Mark Young0f183a82017-02-28 09:58:04 -070013456 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 -070013457 };
13458 };
13459
Mark Young39389872017-01-19 21:10:49 -070013460 struct PhysicalDeviceImageFormatInfo2KHR
13461 {
13462 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13463 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13464 , pNext( nullptr )
13465 , format( format_ )
13466 , type( type_ )
13467 , tiling( tiling_ )
13468 , usage( usage_ )
13469 , flags( flags_ )
13470 {
13471 }
13472
13473 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13474 {
13475 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13476 }
13477
13478 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13479 {
13480 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13481 return *this;
13482 }
13483
Mark Young39389872017-01-19 21:10:49 -070013484 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13485 {
13486 pNext = pNext_;
13487 return *this;
13488 }
13489
13490 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13491 {
13492 format = format_;
13493 return *this;
13494 }
13495
13496 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13497 {
13498 type = type_;
13499 return *this;
13500 }
13501
13502 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13503 {
13504 tiling = tiling_;
13505 return *this;
13506 }
13507
13508 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13509 {
13510 usage = usage_;
13511 return *this;
13512 }
13513
13514 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13515 {
13516 flags = flags_;
13517 return *this;
13518 }
13519
13520 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13521 {
13522 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13523 }
13524
13525 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13526 {
13527 return ( sType == rhs.sType )
13528 && ( pNext == rhs.pNext )
13529 && ( format == rhs.format )
13530 && ( type == rhs.type )
13531 && ( tiling == rhs.tiling )
13532 && ( usage == rhs.usage )
13533 && ( flags == rhs.flags );
13534 }
13535
13536 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13537 {
13538 return !operator==( rhs );
13539 }
13540
13541 private:
13542 StructureType sType;
13543
13544 public:
13545 const void* pNext;
13546 Format format;
13547 ImageType type;
13548 ImageTiling tiling;
13549 ImageUsageFlags usage;
13550 ImageCreateFlags flags;
13551 };
13552 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13553
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013554 enum class PipelineCreateFlagBits
13555 {
13556 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13557 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013558 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13559 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13560 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013561 };
13562
13563 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13564
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013565 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013566 {
13567 return PipelineCreateFlags( bit0 ) | bit1;
13568 }
13569
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013570 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13571 {
13572 return ~( PipelineCreateFlags( bits ) );
13573 }
13574
13575 template <> struct FlagTraits<PipelineCreateFlagBits>
13576 {
13577 enum
13578 {
Mark Young0f183a82017-02-28 09:58:04 -070013579 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013580 };
13581 };
13582
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013583 struct ComputePipelineCreateInfo
13584 {
13585 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13586 : sType( StructureType::eComputePipelineCreateInfo )
13587 , pNext( nullptr )
13588 , flags( flags_ )
13589 , stage( stage_ )
13590 , layout( layout_ )
13591 , basePipelineHandle( basePipelineHandle_ )
13592 , basePipelineIndex( basePipelineIndex_ )
13593 {
13594 }
13595
13596 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13597 {
13598 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13599 }
13600
13601 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13602 {
13603 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13604 return *this;
13605 }
13606
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013607 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13608 {
13609 pNext = pNext_;
13610 return *this;
13611 }
13612
13613 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13614 {
13615 flags = flags_;
13616 return *this;
13617 }
13618
13619 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13620 {
13621 stage = stage_;
13622 return *this;
13623 }
13624
13625 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13626 {
13627 layout = layout_;
13628 return *this;
13629 }
13630
13631 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13632 {
13633 basePipelineHandle = basePipelineHandle_;
13634 return *this;
13635 }
13636
13637 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13638 {
13639 basePipelineIndex = basePipelineIndex_;
13640 return *this;
13641 }
13642
13643 operator const VkComputePipelineCreateInfo&() const
13644 {
13645 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13646 }
13647
13648 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13649 {
13650 return ( sType == rhs.sType )
13651 && ( pNext == rhs.pNext )
13652 && ( flags == rhs.flags )
13653 && ( stage == rhs.stage )
13654 && ( layout == rhs.layout )
13655 && ( basePipelineHandle == rhs.basePipelineHandle )
13656 && ( basePipelineIndex == rhs.basePipelineIndex );
13657 }
13658
13659 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13660 {
13661 return !operator==( rhs );
13662 }
13663
13664 private:
13665 StructureType sType;
13666
13667 public:
13668 const void* pNext;
13669 PipelineCreateFlags flags;
13670 PipelineShaderStageCreateInfo stage;
13671 PipelineLayout layout;
13672 Pipeline basePipelineHandle;
13673 int32_t basePipelineIndex;
13674 };
13675 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13676
13677 enum class ColorComponentFlagBits
13678 {
13679 eR = VK_COLOR_COMPONENT_R_BIT,
13680 eG = VK_COLOR_COMPONENT_G_BIT,
13681 eB = VK_COLOR_COMPONENT_B_BIT,
13682 eA = VK_COLOR_COMPONENT_A_BIT
13683 };
13684
13685 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13686
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013687 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013688 {
13689 return ColorComponentFlags( bit0 ) | bit1;
13690 }
13691
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013692 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13693 {
13694 return ~( ColorComponentFlags( bits ) );
13695 }
13696
13697 template <> struct FlagTraits<ColorComponentFlagBits>
13698 {
13699 enum
13700 {
13701 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13702 };
13703 };
13704
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013705 struct PipelineColorBlendAttachmentState
13706 {
13707 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() )
13708 : blendEnable( blendEnable_ )
13709 , srcColorBlendFactor( srcColorBlendFactor_ )
13710 , dstColorBlendFactor( dstColorBlendFactor_ )
13711 , colorBlendOp( colorBlendOp_ )
13712 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13713 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13714 , alphaBlendOp( alphaBlendOp_ )
13715 , colorWriteMask( colorWriteMask_ )
13716 {
13717 }
13718
13719 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13720 {
13721 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13722 }
13723
13724 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13725 {
13726 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13727 return *this;
13728 }
13729
13730 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13731 {
13732 blendEnable = blendEnable_;
13733 return *this;
13734 }
13735
13736 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13737 {
13738 srcColorBlendFactor = srcColorBlendFactor_;
13739 return *this;
13740 }
13741
13742 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13743 {
13744 dstColorBlendFactor = dstColorBlendFactor_;
13745 return *this;
13746 }
13747
13748 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13749 {
13750 colorBlendOp = colorBlendOp_;
13751 return *this;
13752 }
13753
13754 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13755 {
13756 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13757 return *this;
13758 }
13759
13760 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13761 {
13762 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13763 return *this;
13764 }
13765
13766 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13767 {
13768 alphaBlendOp = alphaBlendOp_;
13769 return *this;
13770 }
13771
13772 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13773 {
13774 colorWriteMask = colorWriteMask_;
13775 return *this;
13776 }
13777
13778 operator const VkPipelineColorBlendAttachmentState&() const
13779 {
13780 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13781 }
13782
13783 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13784 {
13785 return ( blendEnable == rhs.blendEnable )
13786 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13787 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13788 && ( colorBlendOp == rhs.colorBlendOp )
13789 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13790 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13791 && ( alphaBlendOp == rhs.alphaBlendOp )
13792 && ( colorWriteMask == rhs.colorWriteMask );
13793 }
13794
13795 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13796 {
13797 return !operator==( rhs );
13798 }
13799
13800 Bool32 blendEnable;
13801 BlendFactor srcColorBlendFactor;
13802 BlendFactor dstColorBlendFactor;
13803 BlendOp colorBlendOp;
13804 BlendFactor srcAlphaBlendFactor;
13805 BlendFactor dstAlphaBlendFactor;
13806 BlendOp alphaBlendOp;
13807 ColorComponentFlags colorWriteMask;
13808 };
13809 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13810
13811 struct PipelineColorBlendStateCreateInfo
13812 {
13813 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 } } )
13814 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13815 , pNext( nullptr )
13816 , flags( flags_ )
13817 , logicOpEnable( logicOpEnable_ )
13818 , logicOp( logicOp_ )
13819 , attachmentCount( attachmentCount_ )
13820 , pAttachments( pAttachments_ )
13821 {
13822 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13823 }
13824
13825 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13826 {
13827 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13828 }
13829
13830 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13831 {
13832 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13833 return *this;
13834 }
13835
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013836 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13837 {
13838 pNext = pNext_;
13839 return *this;
13840 }
13841
13842 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
13843 {
13844 flags = flags_;
13845 return *this;
13846 }
13847
13848 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
13849 {
13850 logicOpEnable = logicOpEnable_;
13851 return *this;
13852 }
13853
13854 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
13855 {
13856 logicOp = logicOp_;
13857 return *this;
13858 }
13859
13860 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
13861 {
13862 attachmentCount = attachmentCount_;
13863 return *this;
13864 }
13865
13866 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
13867 {
13868 pAttachments = pAttachments_;
13869 return *this;
13870 }
13871
13872 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
13873 {
13874 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13875 return *this;
13876 }
13877
13878 operator const VkPipelineColorBlendStateCreateInfo&() const
13879 {
13880 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
13881 }
13882
13883 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
13884 {
13885 return ( sType == rhs.sType )
13886 && ( pNext == rhs.pNext )
13887 && ( flags == rhs.flags )
13888 && ( logicOpEnable == rhs.logicOpEnable )
13889 && ( logicOp == rhs.logicOp )
13890 && ( attachmentCount == rhs.attachmentCount )
13891 && ( pAttachments == rhs.pAttachments )
13892 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
13893 }
13894
13895 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
13896 {
13897 return !operator==( rhs );
13898 }
13899
13900 private:
13901 StructureType sType;
13902
13903 public:
13904 const void* pNext;
13905 PipelineColorBlendStateCreateFlags flags;
13906 Bool32 logicOpEnable;
13907 LogicOp logicOp;
13908 uint32_t attachmentCount;
13909 const PipelineColorBlendAttachmentState* pAttachments;
13910 float blendConstants[4];
13911 };
13912 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
13913
13914 enum class FenceCreateFlagBits
13915 {
13916 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
13917 };
13918
13919 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
13920
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013921 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013922 {
13923 return FenceCreateFlags( bit0 ) | bit1;
13924 }
13925
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013926 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
13927 {
13928 return ~( FenceCreateFlags( bits ) );
13929 }
13930
13931 template <> struct FlagTraits<FenceCreateFlagBits>
13932 {
13933 enum
13934 {
13935 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
13936 };
13937 };
13938
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013939 struct FenceCreateInfo
13940 {
13941 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
13942 : sType( StructureType::eFenceCreateInfo )
13943 , pNext( nullptr )
13944 , flags( flags_ )
13945 {
13946 }
13947
13948 FenceCreateInfo( VkFenceCreateInfo const & rhs )
13949 {
13950 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13951 }
13952
13953 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
13954 {
13955 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13956 return *this;
13957 }
13958
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013959 FenceCreateInfo& setPNext( const void* pNext_ )
13960 {
13961 pNext = pNext_;
13962 return *this;
13963 }
13964
13965 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
13966 {
13967 flags = flags_;
13968 return *this;
13969 }
13970
13971 operator const VkFenceCreateInfo&() const
13972 {
13973 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
13974 }
13975
13976 bool operator==( FenceCreateInfo const& rhs ) const
13977 {
13978 return ( sType == rhs.sType )
13979 && ( pNext == rhs.pNext )
13980 && ( flags == rhs.flags );
13981 }
13982
13983 bool operator!=( FenceCreateInfo const& rhs ) const
13984 {
13985 return !operator==( rhs );
13986 }
13987
13988 private:
13989 StructureType sType;
13990
13991 public:
13992 const void* pNext;
13993 FenceCreateFlags flags;
13994 };
13995 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
13996
13997 enum class FormatFeatureFlagBits
13998 {
13999 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14000 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14001 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14002 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14003 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14004 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14005 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14006 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14007 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14008 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14009 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14010 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14011 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014012 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14013 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
14014 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014015 };
14016
14017 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014019 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014020 {
14021 return FormatFeatureFlags( bit0 ) | bit1;
14022 }
14023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014024 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14025 {
14026 return ~( FormatFeatureFlags( bits ) );
14027 }
14028
14029 template <> struct FlagTraits<FormatFeatureFlagBits>
14030 {
14031 enum
14032 {
Mark Young39389872017-01-19 21:10:49 -070014033 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 -070014034 };
14035 };
14036
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014037 struct FormatProperties
14038 {
14039 operator const VkFormatProperties&() const
14040 {
14041 return *reinterpret_cast<const VkFormatProperties*>(this);
14042 }
14043
14044 bool operator==( FormatProperties const& rhs ) const
14045 {
14046 return ( linearTilingFeatures == rhs.linearTilingFeatures )
14047 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
14048 && ( bufferFeatures == rhs.bufferFeatures );
14049 }
14050
14051 bool operator!=( FormatProperties const& rhs ) const
14052 {
14053 return !operator==( rhs );
14054 }
14055
14056 FormatFeatureFlags linearTilingFeatures;
14057 FormatFeatureFlags optimalTilingFeatures;
14058 FormatFeatureFlags bufferFeatures;
14059 };
14060 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
14061
Mark Young39389872017-01-19 21:10:49 -070014062 struct FormatProperties2KHR
14063 {
14064 operator const VkFormatProperties2KHR&() const
14065 {
14066 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
14067 }
14068
14069 bool operator==( FormatProperties2KHR const& rhs ) const
14070 {
14071 return ( sType == rhs.sType )
14072 && ( pNext == rhs.pNext )
14073 && ( formatProperties == rhs.formatProperties );
14074 }
14075
14076 bool operator!=( FormatProperties2KHR const& rhs ) const
14077 {
14078 return !operator==( rhs );
14079 }
14080
14081 private:
14082 StructureType sType;
14083
14084 public:
14085 void* pNext;
14086 FormatProperties formatProperties;
14087 };
14088 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
14089
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014090 enum class QueryControlFlagBits
14091 {
14092 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
14093 };
14094
14095 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
14096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014097 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014098 {
14099 return QueryControlFlags( bit0 ) | bit1;
14100 }
14101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014102 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
14103 {
14104 return ~( QueryControlFlags( bits ) );
14105 }
14106
14107 template <> struct FlagTraits<QueryControlFlagBits>
14108 {
14109 enum
14110 {
14111 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
14112 };
14113 };
14114
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014115 enum class QueryResultFlagBits
14116 {
14117 e64 = VK_QUERY_RESULT_64_BIT,
14118 eWait = VK_QUERY_RESULT_WAIT_BIT,
14119 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
14120 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
14121 };
14122
14123 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
14124
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014125 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014126 {
14127 return QueryResultFlags( bit0 ) | bit1;
14128 }
14129
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014130 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
14131 {
14132 return ~( QueryResultFlags( bits ) );
14133 }
14134
14135 template <> struct FlagTraits<QueryResultFlagBits>
14136 {
14137 enum
14138 {
14139 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
14140 };
14141 };
14142
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014143 enum class CommandBufferUsageFlagBits
14144 {
14145 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
14146 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
14147 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
14148 };
14149
14150 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
14151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014152 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014153 {
14154 return CommandBufferUsageFlags( bit0 ) | bit1;
14155 }
14156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014157 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
14158 {
14159 return ~( CommandBufferUsageFlags( bits ) );
14160 }
14161
14162 template <> struct FlagTraits<CommandBufferUsageFlagBits>
14163 {
14164 enum
14165 {
14166 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
14167 };
14168 };
14169
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014170 enum class QueryPipelineStatisticFlagBits
14171 {
14172 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
14173 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
14174 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
14175 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
14176 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
14177 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14178 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14179 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14180 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14181 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14182 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14183 };
14184
14185 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014187 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014188 {
14189 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14190 }
14191
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014192 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14193 {
14194 return ~( QueryPipelineStatisticFlags( bits ) );
14195 }
14196
14197 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14198 {
14199 enum
14200 {
14201 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)
14202 };
14203 };
14204
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014205 struct CommandBufferInheritanceInfo
14206 {
14207 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14208 : sType( StructureType::eCommandBufferInheritanceInfo )
14209 , pNext( nullptr )
14210 , renderPass( renderPass_ )
14211 , subpass( subpass_ )
14212 , framebuffer( framebuffer_ )
14213 , occlusionQueryEnable( occlusionQueryEnable_ )
14214 , queryFlags( queryFlags_ )
14215 , pipelineStatistics( pipelineStatistics_ )
14216 {
14217 }
14218
14219 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14220 {
14221 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14222 }
14223
14224 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14225 {
14226 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14227 return *this;
14228 }
14229
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014230 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14231 {
14232 pNext = pNext_;
14233 return *this;
14234 }
14235
14236 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14237 {
14238 renderPass = renderPass_;
14239 return *this;
14240 }
14241
14242 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14243 {
14244 subpass = subpass_;
14245 return *this;
14246 }
14247
14248 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14249 {
14250 framebuffer = framebuffer_;
14251 return *this;
14252 }
14253
14254 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14255 {
14256 occlusionQueryEnable = occlusionQueryEnable_;
14257 return *this;
14258 }
14259
14260 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14261 {
14262 queryFlags = queryFlags_;
14263 return *this;
14264 }
14265
14266 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14267 {
14268 pipelineStatistics = pipelineStatistics_;
14269 return *this;
14270 }
14271
14272 operator const VkCommandBufferInheritanceInfo&() const
14273 {
14274 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14275 }
14276
14277 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14278 {
14279 return ( sType == rhs.sType )
14280 && ( pNext == rhs.pNext )
14281 && ( renderPass == rhs.renderPass )
14282 && ( subpass == rhs.subpass )
14283 && ( framebuffer == rhs.framebuffer )
14284 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14285 && ( queryFlags == rhs.queryFlags )
14286 && ( pipelineStatistics == rhs.pipelineStatistics );
14287 }
14288
14289 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14290 {
14291 return !operator==( rhs );
14292 }
14293
14294 private:
14295 StructureType sType;
14296
14297 public:
14298 const void* pNext;
14299 RenderPass renderPass;
14300 uint32_t subpass;
14301 Framebuffer framebuffer;
14302 Bool32 occlusionQueryEnable;
14303 QueryControlFlags queryFlags;
14304 QueryPipelineStatisticFlags pipelineStatistics;
14305 };
14306 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14307
14308 struct CommandBufferBeginInfo
14309 {
14310 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14311 : sType( StructureType::eCommandBufferBeginInfo )
14312 , pNext( nullptr )
14313 , flags( flags_ )
14314 , pInheritanceInfo( pInheritanceInfo_ )
14315 {
14316 }
14317
14318 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14319 {
14320 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14321 }
14322
14323 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14324 {
14325 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14326 return *this;
14327 }
14328
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014329 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14330 {
14331 pNext = pNext_;
14332 return *this;
14333 }
14334
14335 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14336 {
14337 flags = flags_;
14338 return *this;
14339 }
14340
14341 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14342 {
14343 pInheritanceInfo = pInheritanceInfo_;
14344 return *this;
14345 }
14346
14347 operator const VkCommandBufferBeginInfo&() const
14348 {
14349 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14350 }
14351
14352 bool operator==( CommandBufferBeginInfo const& rhs ) const
14353 {
14354 return ( sType == rhs.sType )
14355 && ( pNext == rhs.pNext )
14356 && ( flags == rhs.flags )
14357 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14358 }
14359
14360 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14361 {
14362 return !operator==( rhs );
14363 }
14364
14365 private:
14366 StructureType sType;
14367
14368 public:
14369 const void* pNext;
14370 CommandBufferUsageFlags flags;
14371 const CommandBufferInheritanceInfo* pInheritanceInfo;
14372 };
14373 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14374
14375 struct QueryPoolCreateInfo
14376 {
14377 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14378 : sType( StructureType::eQueryPoolCreateInfo )
14379 , pNext( nullptr )
14380 , flags( flags_ )
14381 , queryType( queryType_ )
14382 , queryCount( queryCount_ )
14383 , pipelineStatistics( pipelineStatistics_ )
14384 {
14385 }
14386
14387 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14388 {
14389 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14390 }
14391
14392 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14393 {
14394 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14395 return *this;
14396 }
14397
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014398 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14399 {
14400 pNext = pNext_;
14401 return *this;
14402 }
14403
14404 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14405 {
14406 flags = flags_;
14407 return *this;
14408 }
14409
14410 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14411 {
14412 queryType = queryType_;
14413 return *this;
14414 }
14415
14416 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14417 {
14418 queryCount = queryCount_;
14419 return *this;
14420 }
14421
14422 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14423 {
14424 pipelineStatistics = pipelineStatistics_;
14425 return *this;
14426 }
14427
14428 operator const VkQueryPoolCreateInfo&() const
14429 {
14430 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14431 }
14432
14433 bool operator==( QueryPoolCreateInfo const& rhs ) const
14434 {
14435 return ( sType == rhs.sType )
14436 && ( pNext == rhs.pNext )
14437 && ( flags == rhs.flags )
14438 && ( queryType == rhs.queryType )
14439 && ( queryCount == rhs.queryCount )
14440 && ( pipelineStatistics == rhs.pipelineStatistics );
14441 }
14442
14443 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14444 {
14445 return !operator==( rhs );
14446 }
14447
14448 private:
14449 StructureType sType;
14450
14451 public:
14452 const void* pNext;
14453 QueryPoolCreateFlags flags;
14454 QueryType queryType;
14455 uint32_t queryCount;
14456 QueryPipelineStatisticFlags pipelineStatistics;
14457 };
14458 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14459
14460 enum class ImageAspectFlagBits
14461 {
14462 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14463 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14464 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14465 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14466 };
14467
14468 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14469
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014470 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014471 {
14472 return ImageAspectFlags( bit0 ) | bit1;
14473 }
14474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014475 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14476 {
14477 return ~( ImageAspectFlags( bits ) );
14478 }
14479
14480 template <> struct FlagTraits<ImageAspectFlagBits>
14481 {
14482 enum
14483 {
14484 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14485 };
14486 };
14487
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014488 struct ImageSubresource
14489 {
14490 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14491 : aspectMask( aspectMask_ )
14492 , mipLevel( mipLevel_ )
14493 , arrayLayer( arrayLayer_ )
14494 {
14495 }
14496
14497 ImageSubresource( VkImageSubresource const & rhs )
14498 {
14499 memcpy( this, &rhs, sizeof(ImageSubresource) );
14500 }
14501
14502 ImageSubresource& operator=( VkImageSubresource const & rhs )
14503 {
14504 memcpy( this, &rhs, sizeof(ImageSubresource) );
14505 return *this;
14506 }
14507
14508 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14509 {
14510 aspectMask = aspectMask_;
14511 return *this;
14512 }
14513
14514 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14515 {
14516 mipLevel = mipLevel_;
14517 return *this;
14518 }
14519
14520 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14521 {
14522 arrayLayer = arrayLayer_;
14523 return *this;
14524 }
14525
14526 operator const VkImageSubresource&() const
14527 {
14528 return *reinterpret_cast<const VkImageSubresource*>(this);
14529 }
14530
14531 bool operator==( ImageSubresource const& rhs ) const
14532 {
14533 return ( aspectMask == rhs.aspectMask )
14534 && ( mipLevel == rhs.mipLevel )
14535 && ( arrayLayer == rhs.arrayLayer );
14536 }
14537
14538 bool operator!=( ImageSubresource const& rhs ) const
14539 {
14540 return !operator==( rhs );
14541 }
14542
14543 ImageAspectFlags aspectMask;
14544 uint32_t mipLevel;
14545 uint32_t arrayLayer;
14546 };
14547 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14548
14549 struct ImageSubresourceLayers
14550 {
14551 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14552 : aspectMask( aspectMask_ )
14553 , mipLevel( mipLevel_ )
14554 , baseArrayLayer( baseArrayLayer_ )
14555 , layerCount( layerCount_ )
14556 {
14557 }
14558
14559 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14560 {
14561 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14562 }
14563
14564 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14565 {
14566 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14567 return *this;
14568 }
14569
14570 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14571 {
14572 aspectMask = aspectMask_;
14573 return *this;
14574 }
14575
14576 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14577 {
14578 mipLevel = mipLevel_;
14579 return *this;
14580 }
14581
14582 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14583 {
14584 baseArrayLayer = baseArrayLayer_;
14585 return *this;
14586 }
14587
14588 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14589 {
14590 layerCount = layerCount_;
14591 return *this;
14592 }
14593
14594 operator const VkImageSubresourceLayers&() const
14595 {
14596 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14597 }
14598
14599 bool operator==( ImageSubresourceLayers const& rhs ) const
14600 {
14601 return ( aspectMask == rhs.aspectMask )
14602 && ( mipLevel == rhs.mipLevel )
14603 && ( baseArrayLayer == rhs.baseArrayLayer )
14604 && ( layerCount == rhs.layerCount );
14605 }
14606
14607 bool operator!=( ImageSubresourceLayers const& rhs ) const
14608 {
14609 return !operator==( rhs );
14610 }
14611
14612 ImageAspectFlags aspectMask;
14613 uint32_t mipLevel;
14614 uint32_t baseArrayLayer;
14615 uint32_t layerCount;
14616 };
14617 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14618
14619 struct ImageSubresourceRange
14620 {
14621 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14622 : aspectMask( aspectMask_ )
14623 , baseMipLevel( baseMipLevel_ )
14624 , levelCount( levelCount_ )
14625 , baseArrayLayer( baseArrayLayer_ )
14626 , layerCount( layerCount_ )
14627 {
14628 }
14629
14630 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14631 {
14632 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14633 }
14634
14635 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14636 {
14637 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14638 return *this;
14639 }
14640
14641 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14642 {
14643 aspectMask = aspectMask_;
14644 return *this;
14645 }
14646
14647 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14648 {
14649 baseMipLevel = baseMipLevel_;
14650 return *this;
14651 }
14652
14653 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14654 {
14655 levelCount = levelCount_;
14656 return *this;
14657 }
14658
14659 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14660 {
14661 baseArrayLayer = baseArrayLayer_;
14662 return *this;
14663 }
14664
14665 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14666 {
14667 layerCount = layerCount_;
14668 return *this;
14669 }
14670
14671 operator const VkImageSubresourceRange&() const
14672 {
14673 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14674 }
14675
14676 bool operator==( ImageSubresourceRange const& rhs ) const
14677 {
14678 return ( aspectMask == rhs.aspectMask )
14679 && ( baseMipLevel == rhs.baseMipLevel )
14680 && ( levelCount == rhs.levelCount )
14681 && ( baseArrayLayer == rhs.baseArrayLayer )
14682 && ( layerCount == rhs.layerCount );
14683 }
14684
14685 bool operator!=( ImageSubresourceRange const& rhs ) const
14686 {
14687 return !operator==( rhs );
14688 }
14689
14690 ImageAspectFlags aspectMask;
14691 uint32_t baseMipLevel;
14692 uint32_t levelCount;
14693 uint32_t baseArrayLayer;
14694 uint32_t layerCount;
14695 };
14696 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14697
14698 struct ImageMemoryBarrier
14699 {
14700 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() )
14701 : sType( StructureType::eImageMemoryBarrier )
14702 , pNext( nullptr )
14703 , srcAccessMask( srcAccessMask_ )
14704 , dstAccessMask( dstAccessMask_ )
14705 , oldLayout( oldLayout_ )
14706 , newLayout( newLayout_ )
14707 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14708 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14709 , image( image_ )
14710 , subresourceRange( subresourceRange_ )
14711 {
14712 }
14713
14714 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14715 {
14716 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14717 }
14718
14719 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14720 {
14721 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14722 return *this;
14723 }
14724
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014725 ImageMemoryBarrier& setPNext( const void* pNext_ )
14726 {
14727 pNext = pNext_;
14728 return *this;
14729 }
14730
14731 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14732 {
14733 srcAccessMask = srcAccessMask_;
14734 return *this;
14735 }
14736
14737 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14738 {
14739 dstAccessMask = dstAccessMask_;
14740 return *this;
14741 }
14742
14743 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14744 {
14745 oldLayout = oldLayout_;
14746 return *this;
14747 }
14748
14749 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14750 {
14751 newLayout = newLayout_;
14752 return *this;
14753 }
14754
14755 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14756 {
14757 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14758 return *this;
14759 }
14760
14761 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14762 {
14763 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14764 return *this;
14765 }
14766
14767 ImageMemoryBarrier& setImage( Image image_ )
14768 {
14769 image = image_;
14770 return *this;
14771 }
14772
14773 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14774 {
14775 subresourceRange = subresourceRange_;
14776 return *this;
14777 }
14778
14779 operator const VkImageMemoryBarrier&() const
14780 {
14781 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14782 }
14783
14784 bool operator==( ImageMemoryBarrier const& rhs ) const
14785 {
14786 return ( sType == rhs.sType )
14787 && ( pNext == rhs.pNext )
14788 && ( srcAccessMask == rhs.srcAccessMask )
14789 && ( dstAccessMask == rhs.dstAccessMask )
14790 && ( oldLayout == rhs.oldLayout )
14791 && ( newLayout == rhs.newLayout )
14792 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14793 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14794 && ( image == rhs.image )
14795 && ( subresourceRange == rhs.subresourceRange );
14796 }
14797
14798 bool operator!=( ImageMemoryBarrier const& rhs ) const
14799 {
14800 return !operator==( rhs );
14801 }
14802
14803 private:
14804 StructureType sType;
14805
14806 public:
14807 const void* pNext;
14808 AccessFlags srcAccessMask;
14809 AccessFlags dstAccessMask;
14810 ImageLayout oldLayout;
14811 ImageLayout newLayout;
14812 uint32_t srcQueueFamilyIndex;
14813 uint32_t dstQueueFamilyIndex;
14814 Image image;
14815 ImageSubresourceRange subresourceRange;
14816 };
14817 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14818
14819 struct ImageViewCreateInfo
14820 {
14821 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14822 : sType( StructureType::eImageViewCreateInfo )
14823 , pNext( nullptr )
14824 , flags( flags_ )
14825 , image( image_ )
14826 , viewType( viewType_ )
14827 , format( format_ )
14828 , components( components_ )
14829 , subresourceRange( subresourceRange_ )
14830 {
14831 }
14832
14833 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14834 {
14835 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14836 }
14837
14838 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14839 {
14840 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14841 return *this;
14842 }
14843
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014844 ImageViewCreateInfo& setPNext( const void* pNext_ )
14845 {
14846 pNext = pNext_;
14847 return *this;
14848 }
14849
14850 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
14851 {
14852 flags = flags_;
14853 return *this;
14854 }
14855
14856 ImageViewCreateInfo& setImage( Image image_ )
14857 {
14858 image = image_;
14859 return *this;
14860 }
14861
14862 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
14863 {
14864 viewType = viewType_;
14865 return *this;
14866 }
14867
14868 ImageViewCreateInfo& setFormat( Format format_ )
14869 {
14870 format = format_;
14871 return *this;
14872 }
14873
14874 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
14875 {
14876 components = components_;
14877 return *this;
14878 }
14879
14880 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14881 {
14882 subresourceRange = subresourceRange_;
14883 return *this;
14884 }
14885
14886 operator const VkImageViewCreateInfo&() const
14887 {
14888 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
14889 }
14890
14891 bool operator==( ImageViewCreateInfo const& rhs ) const
14892 {
14893 return ( sType == rhs.sType )
14894 && ( pNext == rhs.pNext )
14895 && ( flags == rhs.flags )
14896 && ( image == rhs.image )
14897 && ( viewType == rhs.viewType )
14898 && ( format == rhs.format )
14899 && ( components == rhs.components )
14900 && ( subresourceRange == rhs.subresourceRange );
14901 }
14902
14903 bool operator!=( ImageViewCreateInfo const& rhs ) const
14904 {
14905 return !operator==( rhs );
14906 }
14907
14908 private:
14909 StructureType sType;
14910
14911 public:
14912 const void* pNext;
14913 ImageViewCreateFlags flags;
14914 Image image;
14915 ImageViewType viewType;
14916 Format format;
14917 ComponentMapping components;
14918 ImageSubresourceRange subresourceRange;
14919 };
14920 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
14921
14922 struct ImageCopy
14923 {
14924 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14925 : srcSubresource( srcSubresource_ )
14926 , srcOffset( srcOffset_ )
14927 , dstSubresource( dstSubresource_ )
14928 , dstOffset( dstOffset_ )
14929 , extent( extent_ )
14930 {
14931 }
14932
14933 ImageCopy( VkImageCopy const & rhs )
14934 {
14935 memcpy( this, &rhs, sizeof(ImageCopy) );
14936 }
14937
14938 ImageCopy& operator=( VkImageCopy const & rhs )
14939 {
14940 memcpy( this, &rhs, sizeof(ImageCopy) );
14941 return *this;
14942 }
14943
14944 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14945 {
14946 srcSubresource = srcSubresource_;
14947 return *this;
14948 }
14949
14950 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
14951 {
14952 srcOffset = srcOffset_;
14953 return *this;
14954 }
14955
14956 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14957 {
14958 dstSubresource = dstSubresource_;
14959 return *this;
14960 }
14961
14962 ImageCopy& setDstOffset( Offset3D dstOffset_ )
14963 {
14964 dstOffset = dstOffset_;
14965 return *this;
14966 }
14967
14968 ImageCopy& setExtent( Extent3D extent_ )
14969 {
14970 extent = extent_;
14971 return *this;
14972 }
14973
14974 operator const VkImageCopy&() const
14975 {
14976 return *reinterpret_cast<const VkImageCopy*>(this);
14977 }
14978
14979 bool operator==( ImageCopy const& rhs ) const
14980 {
14981 return ( srcSubresource == rhs.srcSubresource )
14982 && ( srcOffset == rhs.srcOffset )
14983 && ( dstSubresource == rhs.dstSubresource )
14984 && ( dstOffset == rhs.dstOffset )
14985 && ( extent == rhs.extent );
14986 }
14987
14988 bool operator!=( ImageCopy const& rhs ) const
14989 {
14990 return !operator==( rhs );
14991 }
14992
14993 ImageSubresourceLayers srcSubresource;
14994 Offset3D srcOffset;
14995 ImageSubresourceLayers dstSubresource;
14996 Offset3D dstOffset;
14997 Extent3D extent;
14998 };
14999 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15000
15001 struct ImageBlit
15002 {
15003 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15004 : srcSubresource( srcSubresource_ )
15005 , dstSubresource( dstSubresource_ )
15006 {
15007 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15008 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15009 }
15010
15011 ImageBlit( VkImageBlit const & rhs )
15012 {
15013 memcpy( this, &rhs, sizeof(ImageBlit) );
15014 }
15015
15016 ImageBlit& operator=( VkImageBlit const & rhs )
15017 {
15018 memcpy( this, &rhs, sizeof(ImageBlit) );
15019 return *this;
15020 }
15021
15022 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15023 {
15024 srcSubresource = srcSubresource_;
15025 return *this;
15026 }
15027
15028 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15029 {
15030 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15031 return *this;
15032 }
15033
15034 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15035 {
15036 dstSubresource = dstSubresource_;
15037 return *this;
15038 }
15039
15040 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15041 {
15042 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15043 return *this;
15044 }
15045
15046 operator const VkImageBlit&() const
15047 {
15048 return *reinterpret_cast<const VkImageBlit*>(this);
15049 }
15050
15051 bool operator==( ImageBlit const& rhs ) const
15052 {
15053 return ( srcSubresource == rhs.srcSubresource )
15054 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
15055 && ( dstSubresource == rhs.dstSubresource )
15056 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
15057 }
15058
15059 bool operator!=( ImageBlit const& rhs ) const
15060 {
15061 return !operator==( rhs );
15062 }
15063
15064 ImageSubresourceLayers srcSubresource;
15065 Offset3D srcOffsets[2];
15066 ImageSubresourceLayers dstSubresource;
15067 Offset3D dstOffsets[2];
15068 };
15069 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
15070
15071 struct BufferImageCopy
15072 {
15073 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
15074 : bufferOffset( bufferOffset_ )
15075 , bufferRowLength( bufferRowLength_ )
15076 , bufferImageHeight( bufferImageHeight_ )
15077 , imageSubresource( imageSubresource_ )
15078 , imageOffset( imageOffset_ )
15079 , imageExtent( imageExtent_ )
15080 {
15081 }
15082
15083 BufferImageCopy( VkBufferImageCopy const & rhs )
15084 {
15085 memcpy( this, &rhs, sizeof(BufferImageCopy) );
15086 }
15087
15088 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
15089 {
15090 memcpy( this, &rhs, sizeof(BufferImageCopy) );
15091 return *this;
15092 }
15093
15094 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
15095 {
15096 bufferOffset = bufferOffset_;
15097 return *this;
15098 }
15099
15100 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
15101 {
15102 bufferRowLength = bufferRowLength_;
15103 return *this;
15104 }
15105
15106 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
15107 {
15108 bufferImageHeight = bufferImageHeight_;
15109 return *this;
15110 }
15111
15112 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
15113 {
15114 imageSubresource = imageSubresource_;
15115 return *this;
15116 }
15117
15118 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
15119 {
15120 imageOffset = imageOffset_;
15121 return *this;
15122 }
15123
15124 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
15125 {
15126 imageExtent = imageExtent_;
15127 return *this;
15128 }
15129
15130 operator const VkBufferImageCopy&() const
15131 {
15132 return *reinterpret_cast<const VkBufferImageCopy*>(this);
15133 }
15134
15135 bool operator==( BufferImageCopy const& rhs ) const
15136 {
15137 return ( bufferOffset == rhs.bufferOffset )
15138 && ( bufferRowLength == rhs.bufferRowLength )
15139 && ( bufferImageHeight == rhs.bufferImageHeight )
15140 && ( imageSubresource == rhs.imageSubresource )
15141 && ( imageOffset == rhs.imageOffset )
15142 && ( imageExtent == rhs.imageExtent );
15143 }
15144
15145 bool operator!=( BufferImageCopy const& rhs ) const
15146 {
15147 return !operator==( rhs );
15148 }
15149
15150 DeviceSize bufferOffset;
15151 uint32_t bufferRowLength;
15152 uint32_t bufferImageHeight;
15153 ImageSubresourceLayers imageSubresource;
15154 Offset3D imageOffset;
15155 Extent3D imageExtent;
15156 };
15157 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
15158
15159 struct ImageResolve
15160 {
15161 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15162 : srcSubresource( srcSubresource_ )
15163 , srcOffset( srcOffset_ )
15164 , dstSubresource( dstSubresource_ )
15165 , dstOffset( dstOffset_ )
15166 , extent( extent_ )
15167 {
15168 }
15169
15170 ImageResolve( VkImageResolve const & rhs )
15171 {
15172 memcpy( this, &rhs, sizeof(ImageResolve) );
15173 }
15174
15175 ImageResolve& operator=( VkImageResolve const & rhs )
15176 {
15177 memcpy( this, &rhs, sizeof(ImageResolve) );
15178 return *this;
15179 }
15180
15181 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15182 {
15183 srcSubresource = srcSubresource_;
15184 return *this;
15185 }
15186
15187 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15188 {
15189 srcOffset = srcOffset_;
15190 return *this;
15191 }
15192
15193 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15194 {
15195 dstSubresource = dstSubresource_;
15196 return *this;
15197 }
15198
15199 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15200 {
15201 dstOffset = dstOffset_;
15202 return *this;
15203 }
15204
15205 ImageResolve& setExtent( Extent3D extent_ )
15206 {
15207 extent = extent_;
15208 return *this;
15209 }
15210
15211 operator const VkImageResolve&() const
15212 {
15213 return *reinterpret_cast<const VkImageResolve*>(this);
15214 }
15215
15216 bool operator==( ImageResolve const& rhs ) const
15217 {
15218 return ( srcSubresource == rhs.srcSubresource )
15219 && ( srcOffset == rhs.srcOffset )
15220 && ( dstSubresource == rhs.dstSubresource )
15221 && ( dstOffset == rhs.dstOffset )
15222 && ( extent == rhs.extent );
15223 }
15224
15225 bool operator!=( ImageResolve const& rhs ) const
15226 {
15227 return !operator==( rhs );
15228 }
15229
15230 ImageSubresourceLayers srcSubresource;
15231 Offset3D srcOffset;
15232 ImageSubresourceLayers dstSubresource;
15233 Offset3D dstOffset;
15234 Extent3D extent;
15235 };
15236 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15237
15238 struct ClearAttachment
15239 {
15240 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15241 : aspectMask( aspectMask_ )
15242 , colorAttachment( colorAttachment_ )
15243 , clearValue( clearValue_ )
15244 {
15245 }
15246
15247 ClearAttachment( VkClearAttachment const & rhs )
15248 {
15249 memcpy( this, &rhs, sizeof(ClearAttachment) );
15250 }
15251
15252 ClearAttachment& operator=( VkClearAttachment const & rhs )
15253 {
15254 memcpy( this, &rhs, sizeof(ClearAttachment) );
15255 return *this;
15256 }
15257
15258 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15259 {
15260 aspectMask = aspectMask_;
15261 return *this;
15262 }
15263
15264 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15265 {
15266 colorAttachment = colorAttachment_;
15267 return *this;
15268 }
15269
15270 ClearAttachment& setClearValue( ClearValue clearValue_ )
15271 {
15272 clearValue = clearValue_;
15273 return *this;
15274 }
15275
15276 operator const VkClearAttachment&() const
15277 {
15278 return *reinterpret_cast<const VkClearAttachment*>(this);
15279 }
15280
15281 ImageAspectFlags aspectMask;
15282 uint32_t colorAttachment;
15283 ClearValue clearValue;
15284 };
15285 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15286
15287 enum class SparseImageFormatFlagBits
15288 {
15289 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15290 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15291 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15292 };
15293
15294 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15295
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015296 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015297 {
15298 return SparseImageFormatFlags( bit0 ) | bit1;
15299 }
15300
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015301 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15302 {
15303 return ~( SparseImageFormatFlags( bits ) );
15304 }
15305
15306 template <> struct FlagTraits<SparseImageFormatFlagBits>
15307 {
15308 enum
15309 {
15310 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15311 };
15312 };
15313
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015314 struct SparseImageFormatProperties
15315 {
15316 operator const VkSparseImageFormatProperties&() const
15317 {
15318 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15319 }
15320
15321 bool operator==( SparseImageFormatProperties const& rhs ) const
15322 {
15323 return ( aspectMask == rhs.aspectMask )
15324 && ( imageGranularity == rhs.imageGranularity )
15325 && ( flags == rhs.flags );
15326 }
15327
15328 bool operator!=( SparseImageFormatProperties const& rhs ) const
15329 {
15330 return !operator==( rhs );
15331 }
15332
15333 ImageAspectFlags aspectMask;
15334 Extent3D imageGranularity;
15335 SparseImageFormatFlags flags;
15336 };
15337 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15338
15339 struct SparseImageMemoryRequirements
15340 {
15341 operator const VkSparseImageMemoryRequirements&() const
15342 {
15343 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15344 }
15345
15346 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15347 {
15348 return ( formatProperties == rhs.formatProperties )
15349 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15350 && ( imageMipTailSize == rhs.imageMipTailSize )
15351 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15352 && ( imageMipTailStride == rhs.imageMipTailStride );
15353 }
15354
15355 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15356 {
15357 return !operator==( rhs );
15358 }
15359
15360 SparseImageFormatProperties formatProperties;
15361 uint32_t imageMipTailFirstLod;
15362 DeviceSize imageMipTailSize;
15363 DeviceSize imageMipTailOffset;
15364 DeviceSize imageMipTailStride;
15365 };
15366 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15367
Mark Young39389872017-01-19 21:10:49 -070015368 struct SparseImageFormatProperties2KHR
15369 {
15370 operator const VkSparseImageFormatProperties2KHR&() const
15371 {
15372 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15373 }
15374
15375 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15376 {
15377 return ( sType == rhs.sType )
15378 && ( pNext == rhs.pNext )
15379 && ( properties == rhs.properties );
15380 }
15381
15382 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15383 {
15384 return !operator==( rhs );
15385 }
15386
15387 private:
15388 StructureType sType;
15389
15390 public:
15391 void* pNext;
15392 SparseImageFormatProperties properties;
15393 };
15394 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15395
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015396 enum class SparseMemoryBindFlagBits
15397 {
15398 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15399 };
15400
15401 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15402
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015403 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015404 {
15405 return SparseMemoryBindFlags( bit0 ) | bit1;
15406 }
15407
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015408 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15409 {
15410 return ~( SparseMemoryBindFlags( bits ) );
15411 }
15412
15413 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15414 {
15415 enum
15416 {
15417 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15418 };
15419 };
15420
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015421 struct SparseMemoryBind
15422 {
15423 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15424 : resourceOffset( resourceOffset_ )
15425 , size( size_ )
15426 , memory( memory_ )
15427 , memoryOffset( memoryOffset_ )
15428 , flags( flags_ )
15429 {
15430 }
15431
15432 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15433 {
15434 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15435 }
15436
15437 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15438 {
15439 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15440 return *this;
15441 }
15442
15443 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15444 {
15445 resourceOffset = resourceOffset_;
15446 return *this;
15447 }
15448
15449 SparseMemoryBind& setSize( DeviceSize size_ )
15450 {
15451 size = size_;
15452 return *this;
15453 }
15454
15455 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15456 {
15457 memory = memory_;
15458 return *this;
15459 }
15460
15461 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15462 {
15463 memoryOffset = memoryOffset_;
15464 return *this;
15465 }
15466
15467 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15468 {
15469 flags = flags_;
15470 return *this;
15471 }
15472
15473 operator const VkSparseMemoryBind&() const
15474 {
15475 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15476 }
15477
15478 bool operator==( SparseMemoryBind const& rhs ) const
15479 {
15480 return ( resourceOffset == rhs.resourceOffset )
15481 && ( size == rhs.size )
15482 && ( memory == rhs.memory )
15483 && ( memoryOffset == rhs.memoryOffset )
15484 && ( flags == rhs.flags );
15485 }
15486
15487 bool operator!=( SparseMemoryBind const& rhs ) const
15488 {
15489 return !operator==( rhs );
15490 }
15491
15492 DeviceSize resourceOffset;
15493 DeviceSize size;
15494 DeviceMemory memory;
15495 DeviceSize memoryOffset;
15496 SparseMemoryBindFlags flags;
15497 };
15498 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15499
15500 struct SparseImageMemoryBind
15501 {
15502 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15503 : subresource( subresource_ )
15504 , offset( offset_ )
15505 , extent( extent_ )
15506 , memory( memory_ )
15507 , memoryOffset( memoryOffset_ )
15508 , flags( flags_ )
15509 {
15510 }
15511
15512 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15513 {
15514 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15515 }
15516
15517 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15518 {
15519 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15520 return *this;
15521 }
15522
15523 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15524 {
15525 subresource = subresource_;
15526 return *this;
15527 }
15528
15529 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15530 {
15531 offset = offset_;
15532 return *this;
15533 }
15534
15535 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15536 {
15537 extent = extent_;
15538 return *this;
15539 }
15540
15541 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15542 {
15543 memory = memory_;
15544 return *this;
15545 }
15546
15547 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15548 {
15549 memoryOffset = memoryOffset_;
15550 return *this;
15551 }
15552
15553 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15554 {
15555 flags = flags_;
15556 return *this;
15557 }
15558
15559 operator const VkSparseImageMemoryBind&() const
15560 {
15561 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15562 }
15563
15564 bool operator==( SparseImageMemoryBind const& rhs ) const
15565 {
15566 return ( subresource == rhs.subresource )
15567 && ( offset == rhs.offset )
15568 && ( extent == rhs.extent )
15569 && ( memory == rhs.memory )
15570 && ( memoryOffset == rhs.memoryOffset )
15571 && ( flags == rhs.flags );
15572 }
15573
15574 bool operator!=( SparseImageMemoryBind const& rhs ) const
15575 {
15576 return !operator==( rhs );
15577 }
15578
15579 ImageSubresource subresource;
15580 Offset3D offset;
15581 Extent3D extent;
15582 DeviceMemory memory;
15583 DeviceSize memoryOffset;
15584 SparseMemoryBindFlags flags;
15585 };
15586 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15587
15588 struct SparseBufferMemoryBindInfo
15589 {
15590 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15591 : buffer( buffer_ )
15592 , bindCount( bindCount_ )
15593 , pBinds( pBinds_ )
15594 {
15595 }
15596
15597 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15598 {
15599 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15600 }
15601
15602 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15603 {
15604 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15605 return *this;
15606 }
15607
15608 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15609 {
15610 buffer = buffer_;
15611 return *this;
15612 }
15613
15614 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15615 {
15616 bindCount = bindCount_;
15617 return *this;
15618 }
15619
15620 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15621 {
15622 pBinds = pBinds_;
15623 return *this;
15624 }
15625
15626 operator const VkSparseBufferMemoryBindInfo&() const
15627 {
15628 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15629 }
15630
15631 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15632 {
15633 return ( buffer == rhs.buffer )
15634 && ( bindCount == rhs.bindCount )
15635 && ( pBinds == rhs.pBinds );
15636 }
15637
15638 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15639 {
15640 return !operator==( rhs );
15641 }
15642
15643 Buffer buffer;
15644 uint32_t bindCount;
15645 const SparseMemoryBind* pBinds;
15646 };
15647 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15648
15649 struct SparseImageOpaqueMemoryBindInfo
15650 {
15651 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15652 : image( image_ )
15653 , bindCount( bindCount_ )
15654 , pBinds( pBinds_ )
15655 {
15656 }
15657
15658 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15659 {
15660 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15661 }
15662
15663 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15664 {
15665 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15666 return *this;
15667 }
15668
15669 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15670 {
15671 image = image_;
15672 return *this;
15673 }
15674
15675 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15676 {
15677 bindCount = bindCount_;
15678 return *this;
15679 }
15680
15681 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15682 {
15683 pBinds = pBinds_;
15684 return *this;
15685 }
15686
15687 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15688 {
15689 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15690 }
15691
15692 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15693 {
15694 return ( image == rhs.image )
15695 && ( bindCount == rhs.bindCount )
15696 && ( pBinds == rhs.pBinds );
15697 }
15698
15699 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15700 {
15701 return !operator==( rhs );
15702 }
15703
15704 Image image;
15705 uint32_t bindCount;
15706 const SparseMemoryBind* pBinds;
15707 };
15708 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15709
15710 struct SparseImageMemoryBindInfo
15711 {
15712 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15713 : image( image_ )
15714 , bindCount( bindCount_ )
15715 , pBinds( pBinds_ )
15716 {
15717 }
15718
15719 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15720 {
15721 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15722 }
15723
15724 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15725 {
15726 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15727 return *this;
15728 }
15729
15730 SparseImageMemoryBindInfo& setImage( Image image_ )
15731 {
15732 image = image_;
15733 return *this;
15734 }
15735
15736 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15737 {
15738 bindCount = bindCount_;
15739 return *this;
15740 }
15741
15742 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15743 {
15744 pBinds = pBinds_;
15745 return *this;
15746 }
15747
15748 operator const VkSparseImageMemoryBindInfo&() const
15749 {
15750 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15751 }
15752
15753 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15754 {
15755 return ( image == rhs.image )
15756 && ( bindCount == rhs.bindCount )
15757 && ( pBinds == rhs.pBinds );
15758 }
15759
15760 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15761 {
15762 return !operator==( rhs );
15763 }
15764
15765 Image image;
15766 uint32_t bindCount;
15767 const SparseImageMemoryBind* pBinds;
15768 };
15769 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15770
15771 struct BindSparseInfo
15772 {
15773 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 )
15774 : sType( StructureType::eBindSparseInfo )
15775 , pNext( nullptr )
15776 , waitSemaphoreCount( waitSemaphoreCount_ )
15777 , pWaitSemaphores( pWaitSemaphores_ )
15778 , bufferBindCount( bufferBindCount_ )
15779 , pBufferBinds( pBufferBinds_ )
15780 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15781 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15782 , imageBindCount( imageBindCount_ )
15783 , pImageBinds( pImageBinds_ )
15784 , signalSemaphoreCount( signalSemaphoreCount_ )
15785 , pSignalSemaphores( pSignalSemaphores_ )
15786 {
15787 }
15788
15789 BindSparseInfo( VkBindSparseInfo const & rhs )
15790 {
15791 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15792 }
15793
15794 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15795 {
15796 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15797 return *this;
15798 }
15799
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015800 BindSparseInfo& setPNext( const void* pNext_ )
15801 {
15802 pNext = pNext_;
15803 return *this;
15804 }
15805
15806 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15807 {
15808 waitSemaphoreCount = waitSemaphoreCount_;
15809 return *this;
15810 }
15811
15812 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15813 {
15814 pWaitSemaphores = pWaitSemaphores_;
15815 return *this;
15816 }
15817
15818 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15819 {
15820 bufferBindCount = bufferBindCount_;
15821 return *this;
15822 }
15823
15824 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15825 {
15826 pBufferBinds = pBufferBinds_;
15827 return *this;
15828 }
15829
15830 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15831 {
15832 imageOpaqueBindCount = imageOpaqueBindCount_;
15833 return *this;
15834 }
15835
15836 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15837 {
15838 pImageOpaqueBinds = pImageOpaqueBinds_;
15839 return *this;
15840 }
15841
15842 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15843 {
15844 imageBindCount = imageBindCount_;
15845 return *this;
15846 }
15847
15848 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15849 {
15850 pImageBinds = pImageBinds_;
15851 return *this;
15852 }
15853
15854 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15855 {
15856 signalSemaphoreCount = signalSemaphoreCount_;
15857 return *this;
15858 }
15859
15860 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
15861 {
15862 pSignalSemaphores = pSignalSemaphores_;
15863 return *this;
15864 }
15865
15866 operator const VkBindSparseInfo&() const
15867 {
15868 return *reinterpret_cast<const VkBindSparseInfo*>(this);
15869 }
15870
15871 bool operator==( BindSparseInfo const& rhs ) const
15872 {
15873 return ( sType == rhs.sType )
15874 && ( pNext == rhs.pNext )
15875 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
15876 && ( pWaitSemaphores == rhs.pWaitSemaphores )
15877 && ( bufferBindCount == rhs.bufferBindCount )
15878 && ( pBufferBinds == rhs.pBufferBinds )
15879 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
15880 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
15881 && ( imageBindCount == rhs.imageBindCount )
15882 && ( pImageBinds == rhs.pImageBinds )
15883 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
15884 && ( pSignalSemaphores == rhs.pSignalSemaphores );
15885 }
15886
15887 bool operator!=( BindSparseInfo const& rhs ) const
15888 {
15889 return !operator==( rhs );
15890 }
15891
15892 private:
15893 StructureType sType;
15894
15895 public:
15896 const void* pNext;
15897 uint32_t waitSemaphoreCount;
15898 const Semaphore* pWaitSemaphores;
15899 uint32_t bufferBindCount;
15900 const SparseBufferMemoryBindInfo* pBufferBinds;
15901 uint32_t imageOpaqueBindCount;
15902 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
15903 uint32_t imageBindCount;
15904 const SparseImageMemoryBindInfo* pImageBinds;
15905 uint32_t signalSemaphoreCount;
15906 const Semaphore* pSignalSemaphores;
15907 };
15908 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
15909
15910 enum class PipelineStageFlagBits
15911 {
15912 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
15913 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
15914 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
15915 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
15916 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
15917 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
15918 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
15919 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
15920 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
15921 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
15922 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
15923 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
15924 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
15925 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
15926 eHost = VK_PIPELINE_STAGE_HOST_BIT,
15927 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015928 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
15929 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015930 };
15931
15932 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
15933
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015934 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015935 {
15936 return PipelineStageFlags( bit0 ) | bit1;
15937 }
15938
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015939 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
15940 {
15941 return ~( PipelineStageFlags( bits ) );
15942 }
15943
15944 template <> struct FlagTraits<PipelineStageFlagBits>
15945 {
15946 enum
15947 {
15948 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)
15949 };
15950 };
15951
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015952 enum class CommandPoolCreateFlagBits
15953 {
15954 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
15955 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
15956 };
15957
15958 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
15959
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015960 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015961 {
15962 return CommandPoolCreateFlags( bit0 ) | bit1;
15963 }
15964
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015965 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
15966 {
15967 return ~( CommandPoolCreateFlags( bits ) );
15968 }
15969
15970 template <> struct FlagTraits<CommandPoolCreateFlagBits>
15971 {
15972 enum
15973 {
15974 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
15975 };
15976 };
15977
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015978 struct CommandPoolCreateInfo
15979 {
15980 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
15981 : sType( StructureType::eCommandPoolCreateInfo )
15982 , pNext( nullptr )
15983 , flags( flags_ )
15984 , queueFamilyIndex( queueFamilyIndex_ )
15985 {
15986 }
15987
15988 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
15989 {
15990 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15991 }
15992
15993 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
15994 {
15995 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15996 return *this;
15997 }
15998
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015999 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16000 {
16001 pNext = pNext_;
16002 return *this;
16003 }
16004
16005 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16006 {
16007 flags = flags_;
16008 return *this;
16009 }
16010
16011 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16012 {
16013 queueFamilyIndex = queueFamilyIndex_;
16014 return *this;
16015 }
16016
16017 operator const VkCommandPoolCreateInfo&() const
16018 {
16019 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16020 }
16021
16022 bool operator==( CommandPoolCreateInfo const& rhs ) const
16023 {
16024 return ( sType == rhs.sType )
16025 && ( pNext == rhs.pNext )
16026 && ( flags == rhs.flags )
16027 && ( queueFamilyIndex == rhs.queueFamilyIndex );
16028 }
16029
16030 bool operator!=( CommandPoolCreateInfo const& rhs ) const
16031 {
16032 return !operator==( rhs );
16033 }
16034
16035 private:
16036 StructureType sType;
16037
16038 public:
16039 const void* pNext;
16040 CommandPoolCreateFlags flags;
16041 uint32_t queueFamilyIndex;
16042 };
16043 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
16044
16045 enum class CommandPoolResetFlagBits
16046 {
16047 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
16048 };
16049
16050 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
16051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016052 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016053 {
16054 return CommandPoolResetFlags( bit0 ) | bit1;
16055 }
16056
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016057 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
16058 {
16059 return ~( CommandPoolResetFlags( bits ) );
16060 }
16061
16062 template <> struct FlagTraits<CommandPoolResetFlagBits>
16063 {
16064 enum
16065 {
16066 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
16067 };
16068 };
16069
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016070 enum class CommandBufferResetFlagBits
16071 {
16072 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
16073 };
16074
16075 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
16076
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016077 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016078 {
16079 return CommandBufferResetFlags( bit0 ) | bit1;
16080 }
16081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016082 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
16083 {
16084 return ~( CommandBufferResetFlags( bits ) );
16085 }
16086
16087 template <> struct FlagTraits<CommandBufferResetFlagBits>
16088 {
16089 enum
16090 {
16091 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
16092 };
16093 };
16094
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016095 enum class SampleCountFlagBits
16096 {
16097 e1 = VK_SAMPLE_COUNT_1_BIT,
16098 e2 = VK_SAMPLE_COUNT_2_BIT,
16099 e4 = VK_SAMPLE_COUNT_4_BIT,
16100 e8 = VK_SAMPLE_COUNT_8_BIT,
16101 e16 = VK_SAMPLE_COUNT_16_BIT,
16102 e32 = VK_SAMPLE_COUNT_32_BIT,
16103 e64 = VK_SAMPLE_COUNT_64_BIT
16104 };
16105
16106 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
16107
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016108 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016109 {
16110 return SampleCountFlags( bit0 ) | bit1;
16111 }
16112
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016113 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
16114 {
16115 return ~( SampleCountFlags( bits ) );
16116 }
16117
16118 template <> struct FlagTraits<SampleCountFlagBits>
16119 {
16120 enum
16121 {
16122 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
16123 };
16124 };
16125
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016126 struct ImageFormatProperties
16127 {
16128 operator const VkImageFormatProperties&() const
16129 {
16130 return *reinterpret_cast<const VkImageFormatProperties*>(this);
16131 }
16132
16133 bool operator==( ImageFormatProperties const& rhs ) const
16134 {
16135 return ( maxExtent == rhs.maxExtent )
16136 && ( maxMipLevels == rhs.maxMipLevels )
16137 && ( maxArrayLayers == rhs.maxArrayLayers )
16138 && ( sampleCounts == rhs.sampleCounts )
16139 && ( maxResourceSize == rhs.maxResourceSize );
16140 }
16141
16142 bool operator!=( ImageFormatProperties const& rhs ) const
16143 {
16144 return !operator==( rhs );
16145 }
16146
16147 Extent3D maxExtent;
16148 uint32_t maxMipLevels;
16149 uint32_t maxArrayLayers;
16150 SampleCountFlags sampleCounts;
16151 DeviceSize maxResourceSize;
16152 };
16153 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
16154
16155 struct ImageCreateInfo
16156 {
16157 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 )
16158 : sType( StructureType::eImageCreateInfo )
16159 , pNext( nullptr )
16160 , flags( flags_ )
16161 , imageType( imageType_ )
16162 , format( format_ )
16163 , extent( extent_ )
16164 , mipLevels( mipLevels_ )
16165 , arrayLayers( arrayLayers_ )
16166 , samples( samples_ )
16167 , tiling( tiling_ )
16168 , usage( usage_ )
16169 , sharingMode( sharingMode_ )
16170 , queueFamilyIndexCount( queueFamilyIndexCount_ )
16171 , pQueueFamilyIndices( pQueueFamilyIndices_ )
16172 , initialLayout( initialLayout_ )
16173 {
16174 }
16175
16176 ImageCreateInfo( VkImageCreateInfo const & rhs )
16177 {
16178 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16179 }
16180
16181 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16182 {
16183 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16184 return *this;
16185 }
16186
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016187 ImageCreateInfo& setPNext( const void* pNext_ )
16188 {
16189 pNext = pNext_;
16190 return *this;
16191 }
16192
16193 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16194 {
16195 flags = flags_;
16196 return *this;
16197 }
16198
16199 ImageCreateInfo& setImageType( ImageType imageType_ )
16200 {
16201 imageType = imageType_;
16202 return *this;
16203 }
16204
16205 ImageCreateInfo& setFormat( Format format_ )
16206 {
16207 format = format_;
16208 return *this;
16209 }
16210
16211 ImageCreateInfo& setExtent( Extent3D extent_ )
16212 {
16213 extent = extent_;
16214 return *this;
16215 }
16216
16217 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16218 {
16219 mipLevels = mipLevels_;
16220 return *this;
16221 }
16222
16223 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16224 {
16225 arrayLayers = arrayLayers_;
16226 return *this;
16227 }
16228
16229 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16230 {
16231 samples = samples_;
16232 return *this;
16233 }
16234
16235 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16236 {
16237 tiling = tiling_;
16238 return *this;
16239 }
16240
16241 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16242 {
16243 usage = usage_;
16244 return *this;
16245 }
16246
16247 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16248 {
16249 sharingMode = sharingMode_;
16250 return *this;
16251 }
16252
16253 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16254 {
16255 queueFamilyIndexCount = queueFamilyIndexCount_;
16256 return *this;
16257 }
16258
16259 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16260 {
16261 pQueueFamilyIndices = pQueueFamilyIndices_;
16262 return *this;
16263 }
16264
16265 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16266 {
16267 initialLayout = initialLayout_;
16268 return *this;
16269 }
16270
16271 operator const VkImageCreateInfo&() const
16272 {
16273 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16274 }
16275
16276 bool operator==( ImageCreateInfo const& rhs ) const
16277 {
16278 return ( sType == rhs.sType )
16279 && ( pNext == rhs.pNext )
16280 && ( flags == rhs.flags )
16281 && ( imageType == rhs.imageType )
16282 && ( format == rhs.format )
16283 && ( extent == rhs.extent )
16284 && ( mipLevels == rhs.mipLevels )
16285 && ( arrayLayers == rhs.arrayLayers )
16286 && ( samples == rhs.samples )
16287 && ( tiling == rhs.tiling )
16288 && ( usage == rhs.usage )
16289 && ( sharingMode == rhs.sharingMode )
16290 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16291 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16292 && ( initialLayout == rhs.initialLayout );
16293 }
16294
16295 bool operator!=( ImageCreateInfo const& rhs ) const
16296 {
16297 return !operator==( rhs );
16298 }
16299
16300 private:
16301 StructureType sType;
16302
16303 public:
16304 const void* pNext;
16305 ImageCreateFlags flags;
16306 ImageType imageType;
16307 Format format;
16308 Extent3D extent;
16309 uint32_t mipLevels;
16310 uint32_t arrayLayers;
16311 SampleCountFlagBits samples;
16312 ImageTiling tiling;
16313 ImageUsageFlags usage;
16314 SharingMode sharingMode;
16315 uint32_t queueFamilyIndexCount;
16316 const uint32_t* pQueueFamilyIndices;
16317 ImageLayout initialLayout;
16318 };
16319 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16320
16321 struct PipelineMultisampleStateCreateInfo
16322 {
16323 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16324 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16325 , pNext( nullptr )
16326 , flags( flags_ )
16327 , rasterizationSamples( rasterizationSamples_ )
16328 , sampleShadingEnable( sampleShadingEnable_ )
16329 , minSampleShading( minSampleShading_ )
16330 , pSampleMask( pSampleMask_ )
16331 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16332 , alphaToOneEnable( alphaToOneEnable_ )
16333 {
16334 }
16335
16336 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16337 {
16338 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16339 }
16340
16341 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16342 {
16343 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16344 return *this;
16345 }
16346
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016347 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16348 {
16349 pNext = pNext_;
16350 return *this;
16351 }
16352
16353 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16354 {
16355 flags = flags_;
16356 return *this;
16357 }
16358
16359 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16360 {
16361 rasterizationSamples = rasterizationSamples_;
16362 return *this;
16363 }
16364
16365 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16366 {
16367 sampleShadingEnable = sampleShadingEnable_;
16368 return *this;
16369 }
16370
16371 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16372 {
16373 minSampleShading = minSampleShading_;
16374 return *this;
16375 }
16376
16377 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16378 {
16379 pSampleMask = pSampleMask_;
16380 return *this;
16381 }
16382
16383 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16384 {
16385 alphaToCoverageEnable = alphaToCoverageEnable_;
16386 return *this;
16387 }
16388
16389 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16390 {
16391 alphaToOneEnable = alphaToOneEnable_;
16392 return *this;
16393 }
16394
16395 operator const VkPipelineMultisampleStateCreateInfo&() const
16396 {
16397 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16398 }
16399
16400 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16401 {
16402 return ( sType == rhs.sType )
16403 && ( pNext == rhs.pNext )
16404 && ( flags == rhs.flags )
16405 && ( rasterizationSamples == rhs.rasterizationSamples )
16406 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16407 && ( minSampleShading == rhs.minSampleShading )
16408 && ( pSampleMask == rhs.pSampleMask )
16409 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16410 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16411 }
16412
16413 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16414 {
16415 return !operator==( rhs );
16416 }
16417
16418 private:
16419 StructureType sType;
16420
16421 public:
16422 const void* pNext;
16423 PipelineMultisampleStateCreateFlags flags;
16424 SampleCountFlagBits rasterizationSamples;
16425 Bool32 sampleShadingEnable;
16426 float minSampleShading;
16427 const SampleMask* pSampleMask;
16428 Bool32 alphaToCoverageEnable;
16429 Bool32 alphaToOneEnable;
16430 };
16431 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16432
16433 struct GraphicsPipelineCreateInfo
16434 {
16435 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 )
16436 : sType( StructureType::eGraphicsPipelineCreateInfo )
16437 , pNext( nullptr )
16438 , flags( flags_ )
16439 , stageCount( stageCount_ )
16440 , pStages( pStages_ )
16441 , pVertexInputState( pVertexInputState_ )
16442 , pInputAssemblyState( pInputAssemblyState_ )
16443 , pTessellationState( pTessellationState_ )
16444 , pViewportState( pViewportState_ )
16445 , pRasterizationState( pRasterizationState_ )
16446 , pMultisampleState( pMultisampleState_ )
16447 , pDepthStencilState( pDepthStencilState_ )
16448 , pColorBlendState( pColorBlendState_ )
16449 , pDynamicState( pDynamicState_ )
16450 , layout( layout_ )
16451 , renderPass( renderPass_ )
16452 , subpass( subpass_ )
16453 , basePipelineHandle( basePipelineHandle_ )
16454 , basePipelineIndex( basePipelineIndex_ )
16455 {
16456 }
16457
16458 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16459 {
16460 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16461 }
16462
16463 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16464 {
16465 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16466 return *this;
16467 }
16468
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016469 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16470 {
16471 pNext = pNext_;
16472 return *this;
16473 }
16474
16475 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16476 {
16477 flags = flags_;
16478 return *this;
16479 }
16480
16481 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16482 {
16483 stageCount = stageCount_;
16484 return *this;
16485 }
16486
16487 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16488 {
16489 pStages = pStages_;
16490 return *this;
16491 }
16492
16493 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16494 {
16495 pVertexInputState = pVertexInputState_;
16496 return *this;
16497 }
16498
16499 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16500 {
16501 pInputAssemblyState = pInputAssemblyState_;
16502 return *this;
16503 }
16504
16505 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16506 {
16507 pTessellationState = pTessellationState_;
16508 return *this;
16509 }
16510
16511 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16512 {
16513 pViewportState = pViewportState_;
16514 return *this;
16515 }
16516
16517 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16518 {
16519 pRasterizationState = pRasterizationState_;
16520 return *this;
16521 }
16522
16523 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16524 {
16525 pMultisampleState = pMultisampleState_;
16526 return *this;
16527 }
16528
16529 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16530 {
16531 pDepthStencilState = pDepthStencilState_;
16532 return *this;
16533 }
16534
16535 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16536 {
16537 pColorBlendState = pColorBlendState_;
16538 return *this;
16539 }
16540
16541 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16542 {
16543 pDynamicState = pDynamicState_;
16544 return *this;
16545 }
16546
16547 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16548 {
16549 layout = layout_;
16550 return *this;
16551 }
16552
16553 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16554 {
16555 renderPass = renderPass_;
16556 return *this;
16557 }
16558
16559 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16560 {
16561 subpass = subpass_;
16562 return *this;
16563 }
16564
16565 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16566 {
16567 basePipelineHandle = basePipelineHandle_;
16568 return *this;
16569 }
16570
16571 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16572 {
16573 basePipelineIndex = basePipelineIndex_;
16574 return *this;
16575 }
16576
16577 operator const VkGraphicsPipelineCreateInfo&() const
16578 {
16579 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16580 }
16581
16582 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16583 {
16584 return ( sType == rhs.sType )
16585 && ( pNext == rhs.pNext )
16586 && ( flags == rhs.flags )
16587 && ( stageCount == rhs.stageCount )
16588 && ( pStages == rhs.pStages )
16589 && ( pVertexInputState == rhs.pVertexInputState )
16590 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16591 && ( pTessellationState == rhs.pTessellationState )
16592 && ( pViewportState == rhs.pViewportState )
16593 && ( pRasterizationState == rhs.pRasterizationState )
16594 && ( pMultisampleState == rhs.pMultisampleState )
16595 && ( pDepthStencilState == rhs.pDepthStencilState )
16596 && ( pColorBlendState == rhs.pColorBlendState )
16597 && ( pDynamicState == rhs.pDynamicState )
16598 && ( layout == rhs.layout )
16599 && ( renderPass == rhs.renderPass )
16600 && ( subpass == rhs.subpass )
16601 && ( basePipelineHandle == rhs.basePipelineHandle )
16602 && ( basePipelineIndex == rhs.basePipelineIndex );
16603 }
16604
16605 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16606 {
16607 return !operator==( rhs );
16608 }
16609
16610 private:
16611 StructureType sType;
16612
16613 public:
16614 const void* pNext;
16615 PipelineCreateFlags flags;
16616 uint32_t stageCount;
16617 const PipelineShaderStageCreateInfo* pStages;
16618 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16619 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16620 const PipelineTessellationStateCreateInfo* pTessellationState;
16621 const PipelineViewportStateCreateInfo* pViewportState;
16622 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16623 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16624 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16625 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16626 const PipelineDynamicStateCreateInfo* pDynamicState;
16627 PipelineLayout layout;
16628 RenderPass renderPass;
16629 uint32_t subpass;
16630 Pipeline basePipelineHandle;
16631 int32_t basePipelineIndex;
16632 };
16633 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16634
16635 struct PhysicalDeviceLimits
16636 {
16637 operator const VkPhysicalDeviceLimits&() const
16638 {
16639 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16640 }
16641
16642 bool operator==( PhysicalDeviceLimits const& rhs ) const
16643 {
16644 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16645 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16646 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16647 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16648 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16649 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16650 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16651 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16652 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16653 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16654 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16655 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16656 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16657 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16658 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16659 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16660 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16661 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16662 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16663 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16664 && ( maxPerStageResources == rhs.maxPerStageResources )
16665 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16666 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16667 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16668 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16669 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16670 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16671 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16672 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16673 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16674 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16675 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16676 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16677 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16678 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16679 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16680 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16681 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16682 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16683 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16684 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16685 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16686 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16687 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16688 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16689 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16690 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16691 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16692 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16693 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16694 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16695 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16696 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16697 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16698 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16699 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16700 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16701 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16702 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16703 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16704 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16705 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16706 && ( maxViewports == rhs.maxViewports )
16707 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16708 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16709 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16710 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16711 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16712 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16713 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16714 && ( minTexelOffset == rhs.minTexelOffset )
16715 && ( maxTexelOffset == rhs.maxTexelOffset )
16716 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16717 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16718 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16719 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16720 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16721 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16722 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16723 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16724 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16725 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16726 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16727 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16728 && ( maxColorAttachments == rhs.maxColorAttachments )
16729 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16730 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16731 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16732 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16733 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16734 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16735 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16736 && ( timestampPeriod == rhs.timestampPeriod )
16737 && ( maxClipDistances == rhs.maxClipDistances )
16738 && ( maxCullDistances == rhs.maxCullDistances )
16739 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16740 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16741 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16742 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16743 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16744 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16745 && ( strictLines == rhs.strictLines )
16746 && ( standardSampleLocations == rhs.standardSampleLocations )
16747 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16748 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16749 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16750 }
16751
16752 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16753 {
16754 return !operator==( rhs );
16755 }
16756
16757 uint32_t maxImageDimension1D;
16758 uint32_t maxImageDimension2D;
16759 uint32_t maxImageDimension3D;
16760 uint32_t maxImageDimensionCube;
16761 uint32_t maxImageArrayLayers;
16762 uint32_t maxTexelBufferElements;
16763 uint32_t maxUniformBufferRange;
16764 uint32_t maxStorageBufferRange;
16765 uint32_t maxPushConstantsSize;
16766 uint32_t maxMemoryAllocationCount;
16767 uint32_t maxSamplerAllocationCount;
16768 DeviceSize bufferImageGranularity;
16769 DeviceSize sparseAddressSpaceSize;
16770 uint32_t maxBoundDescriptorSets;
16771 uint32_t maxPerStageDescriptorSamplers;
16772 uint32_t maxPerStageDescriptorUniformBuffers;
16773 uint32_t maxPerStageDescriptorStorageBuffers;
16774 uint32_t maxPerStageDescriptorSampledImages;
16775 uint32_t maxPerStageDescriptorStorageImages;
16776 uint32_t maxPerStageDescriptorInputAttachments;
16777 uint32_t maxPerStageResources;
16778 uint32_t maxDescriptorSetSamplers;
16779 uint32_t maxDescriptorSetUniformBuffers;
16780 uint32_t maxDescriptorSetUniformBuffersDynamic;
16781 uint32_t maxDescriptorSetStorageBuffers;
16782 uint32_t maxDescriptorSetStorageBuffersDynamic;
16783 uint32_t maxDescriptorSetSampledImages;
16784 uint32_t maxDescriptorSetStorageImages;
16785 uint32_t maxDescriptorSetInputAttachments;
16786 uint32_t maxVertexInputAttributes;
16787 uint32_t maxVertexInputBindings;
16788 uint32_t maxVertexInputAttributeOffset;
16789 uint32_t maxVertexInputBindingStride;
16790 uint32_t maxVertexOutputComponents;
16791 uint32_t maxTessellationGenerationLevel;
16792 uint32_t maxTessellationPatchSize;
16793 uint32_t maxTessellationControlPerVertexInputComponents;
16794 uint32_t maxTessellationControlPerVertexOutputComponents;
16795 uint32_t maxTessellationControlPerPatchOutputComponents;
16796 uint32_t maxTessellationControlTotalOutputComponents;
16797 uint32_t maxTessellationEvaluationInputComponents;
16798 uint32_t maxTessellationEvaluationOutputComponents;
16799 uint32_t maxGeometryShaderInvocations;
16800 uint32_t maxGeometryInputComponents;
16801 uint32_t maxGeometryOutputComponents;
16802 uint32_t maxGeometryOutputVertices;
16803 uint32_t maxGeometryTotalOutputComponents;
16804 uint32_t maxFragmentInputComponents;
16805 uint32_t maxFragmentOutputAttachments;
16806 uint32_t maxFragmentDualSrcAttachments;
16807 uint32_t maxFragmentCombinedOutputResources;
16808 uint32_t maxComputeSharedMemorySize;
16809 uint32_t maxComputeWorkGroupCount[3];
16810 uint32_t maxComputeWorkGroupInvocations;
16811 uint32_t maxComputeWorkGroupSize[3];
16812 uint32_t subPixelPrecisionBits;
16813 uint32_t subTexelPrecisionBits;
16814 uint32_t mipmapPrecisionBits;
16815 uint32_t maxDrawIndexedIndexValue;
16816 uint32_t maxDrawIndirectCount;
16817 float maxSamplerLodBias;
16818 float maxSamplerAnisotropy;
16819 uint32_t maxViewports;
16820 uint32_t maxViewportDimensions[2];
16821 float viewportBoundsRange[2];
16822 uint32_t viewportSubPixelBits;
16823 size_t minMemoryMapAlignment;
16824 DeviceSize minTexelBufferOffsetAlignment;
16825 DeviceSize minUniformBufferOffsetAlignment;
16826 DeviceSize minStorageBufferOffsetAlignment;
16827 int32_t minTexelOffset;
16828 uint32_t maxTexelOffset;
16829 int32_t minTexelGatherOffset;
16830 uint32_t maxTexelGatherOffset;
16831 float minInterpolationOffset;
16832 float maxInterpolationOffset;
16833 uint32_t subPixelInterpolationOffsetBits;
16834 uint32_t maxFramebufferWidth;
16835 uint32_t maxFramebufferHeight;
16836 uint32_t maxFramebufferLayers;
16837 SampleCountFlags framebufferColorSampleCounts;
16838 SampleCountFlags framebufferDepthSampleCounts;
16839 SampleCountFlags framebufferStencilSampleCounts;
16840 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16841 uint32_t maxColorAttachments;
16842 SampleCountFlags sampledImageColorSampleCounts;
16843 SampleCountFlags sampledImageIntegerSampleCounts;
16844 SampleCountFlags sampledImageDepthSampleCounts;
16845 SampleCountFlags sampledImageStencilSampleCounts;
16846 SampleCountFlags storageImageSampleCounts;
16847 uint32_t maxSampleMaskWords;
16848 Bool32 timestampComputeAndGraphics;
16849 float timestampPeriod;
16850 uint32_t maxClipDistances;
16851 uint32_t maxCullDistances;
16852 uint32_t maxCombinedClipAndCullDistances;
16853 uint32_t discreteQueuePriorities;
16854 float pointSizeRange[2];
16855 float lineWidthRange[2];
16856 float pointSizeGranularity;
16857 float lineWidthGranularity;
16858 Bool32 strictLines;
16859 Bool32 standardSampleLocations;
16860 DeviceSize optimalBufferCopyOffsetAlignment;
16861 DeviceSize optimalBufferCopyRowPitchAlignment;
16862 DeviceSize nonCoherentAtomSize;
16863 };
16864 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
16865
16866 struct PhysicalDeviceProperties
16867 {
16868 operator const VkPhysicalDeviceProperties&() const
16869 {
16870 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
16871 }
16872
16873 bool operator==( PhysicalDeviceProperties const& rhs ) const
16874 {
16875 return ( apiVersion == rhs.apiVersion )
16876 && ( driverVersion == rhs.driverVersion )
16877 && ( vendorID == rhs.vendorID )
16878 && ( deviceID == rhs.deviceID )
16879 && ( deviceType == rhs.deviceType )
16880 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
16881 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
16882 && ( limits == rhs.limits )
16883 && ( sparseProperties == rhs.sparseProperties );
16884 }
16885
16886 bool operator!=( PhysicalDeviceProperties const& rhs ) const
16887 {
16888 return !operator==( rhs );
16889 }
16890
16891 uint32_t apiVersion;
16892 uint32_t driverVersion;
16893 uint32_t vendorID;
16894 uint32_t deviceID;
16895 PhysicalDeviceType deviceType;
16896 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
16897 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
16898 PhysicalDeviceLimits limits;
16899 PhysicalDeviceSparseProperties sparseProperties;
16900 };
16901 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
16902
Mark Young39389872017-01-19 21:10:49 -070016903 struct PhysicalDeviceProperties2KHR
16904 {
16905 operator const VkPhysicalDeviceProperties2KHR&() const
16906 {
16907 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
16908 }
16909
16910 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
16911 {
16912 return ( sType == rhs.sType )
16913 && ( pNext == rhs.pNext )
16914 && ( properties == rhs.properties );
16915 }
16916
16917 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
16918 {
16919 return !operator==( rhs );
16920 }
16921
16922 private:
16923 StructureType sType;
16924
16925 public:
16926 void* pNext;
16927 PhysicalDeviceProperties properties;
16928 };
16929 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
16930
16931 struct ImageFormatProperties2KHR
16932 {
16933 operator const VkImageFormatProperties2KHR&() const
16934 {
16935 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
16936 }
16937
16938 bool operator==( ImageFormatProperties2KHR const& rhs ) const
16939 {
16940 return ( sType == rhs.sType )
16941 && ( pNext == rhs.pNext )
16942 && ( imageFormatProperties == rhs.imageFormatProperties );
16943 }
16944
16945 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
16946 {
16947 return !operator==( rhs );
16948 }
16949
16950 private:
16951 StructureType sType;
16952
16953 public:
16954 void* pNext;
16955 ImageFormatProperties imageFormatProperties;
16956 };
16957 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16958
16959 struct PhysicalDeviceSparseImageFormatInfo2KHR
16960 {
16961 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
16962 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
16963 , pNext( nullptr )
16964 , format( format_ )
16965 , type( type_ )
16966 , samples( samples_ )
16967 , usage( usage_ )
16968 , tiling( tiling_ )
16969 {
16970 }
16971
16972 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16973 {
16974 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16975 }
16976
16977 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16978 {
16979 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16980 return *this;
16981 }
16982
Mark Young39389872017-01-19 21:10:49 -070016983 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
16984 {
16985 pNext = pNext_;
16986 return *this;
16987 }
16988
16989 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
16990 {
16991 format = format_;
16992 return *this;
16993 }
16994
16995 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
16996 {
16997 type = type_;
16998 return *this;
16999 }
17000
17001 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17002 {
17003 samples = samples_;
17004 return *this;
17005 }
17006
17007 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17008 {
17009 usage = usage_;
17010 return *this;
17011 }
17012
17013 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17014 {
17015 tiling = tiling_;
17016 return *this;
17017 }
17018
17019 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17020 {
17021 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17022 }
17023
17024 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17025 {
17026 return ( sType == rhs.sType )
17027 && ( pNext == rhs.pNext )
17028 && ( format == rhs.format )
17029 && ( type == rhs.type )
17030 && ( samples == rhs.samples )
17031 && ( usage == rhs.usage )
17032 && ( tiling == rhs.tiling );
17033 }
17034
17035 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17036 {
17037 return !operator==( rhs );
17038 }
17039
17040 private:
17041 StructureType sType;
17042
17043 public:
17044 const void* pNext;
17045 Format format;
17046 ImageType type;
17047 SampleCountFlagBits samples;
17048 ImageUsageFlags usage;
17049 ImageTiling tiling;
17050 };
17051 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
17052
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017053 enum class AttachmentDescriptionFlagBits
17054 {
17055 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
17056 };
17057
17058 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
17059
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017060 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017061 {
17062 return AttachmentDescriptionFlags( bit0 ) | bit1;
17063 }
17064
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017065 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
17066 {
17067 return ~( AttachmentDescriptionFlags( bits ) );
17068 }
17069
17070 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
17071 {
17072 enum
17073 {
17074 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
17075 };
17076 };
17077
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017078 struct AttachmentDescription
17079 {
17080 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 )
17081 : flags( flags_ )
17082 , format( format_ )
17083 , samples( samples_ )
17084 , loadOp( loadOp_ )
17085 , storeOp( storeOp_ )
17086 , stencilLoadOp( stencilLoadOp_ )
17087 , stencilStoreOp( stencilStoreOp_ )
17088 , initialLayout( initialLayout_ )
17089 , finalLayout( finalLayout_ )
17090 {
17091 }
17092
17093 AttachmentDescription( VkAttachmentDescription const & rhs )
17094 {
17095 memcpy( this, &rhs, sizeof(AttachmentDescription) );
17096 }
17097
17098 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
17099 {
17100 memcpy( this, &rhs, sizeof(AttachmentDescription) );
17101 return *this;
17102 }
17103
17104 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
17105 {
17106 flags = flags_;
17107 return *this;
17108 }
17109
17110 AttachmentDescription& setFormat( Format format_ )
17111 {
17112 format = format_;
17113 return *this;
17114 }
17115
17116 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
17117 {
17118 samples = samples_;
17119 return *this;
17120 }
17121
17122 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
17123 {
17124 loadOp = loadOp_;
17125 return *this;
17126 }
17127
17128 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
17129 {
17130 storeOp = storeOp_;
17131 return *this;
17132 }
17133
17134 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
17135 {
17136 stencilLoadOp = stencilLoadOp_;
17137 return *this;
17138 }
17139
17140 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
17141 {
17142 stencilStoreOp = stencilStoreOp_;
17143 return *this;
17144 }
17145
17146 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
17147 {
17148 initialLayout = initialLayout_;
17149 return *this;
17150 }
17151
17152 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
17153 {
17154 finalLayout = finalLayout_;
17155 return *this;
17156 }
17157
17158 operator const VkAttachmentDescription&() const
17159 {
17160 return *reinterpret_cast<const VkAttachmentDescription*>(this);
17161 }
17162
17163 bool operator==( AttachmentDescription const& rhs ) const
17164 {
17165 return ( flags == rhs.flags )
17166 && ( format == rhs.format )
17167 && ( samples == rhs.samples )
17168 && ( loadOp == rhs.loadOp )
17169 && ( storeOp == rhs.storeOp )
17170 && ( stencilLoadOp == rhs.stencilLoadOp )
17171 && ( stencilStoreOp == rhs.stencilStoreOp )
17172 && ( initialLayout == rhs.initialLayout )
17173 && ( finalLayout == rhs.finalLayout );
17174 }
17175
17176 bool operator!=( AttachmentDescription const& rhs ) const
17177 {
17178 return !operator==( rhs );
17179 }
17180
17181 AttachmentDescriptionFlags flags;
17182 Format format;
17183 SampleCountFlagBits samples;
17184 AttachmentLoadOp loadOp;
17185 AttachmentStoreOp storeOp;
17186 AttachmentLoadOp stencilLoadOp;
17187 AttachmentStoreOp stencilStoreOp;
17188 ImageLayout initialLayout;
17189 ImageLayout finalLayout;
17190 };
17191 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17192
17193 enum class StencilFaceFlagBits
17194 {
17195 eFront = VK_STENCIL_FACE_FRONT_BIT,
17196 eBack = VK_STENCIL_FACE_BACK_BIT,
17197 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17198 };
17199
17200 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017202 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017203 {
17204 return StencilFaceFlags( bit0 ) | bit1;
17205 }
17206
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017207 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17208 {
17209 return ~( StencilFaceFlags( bits ) );
17210 }
17211
17212 template <> struct FlagTraits<StencilFaceFlagBits>
17213 {
17214 enum
17215 {
17216 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17217 };
17218 };
17219
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017220 enum class DescriptorPoolCreateFlagBits
17221 {
17222 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17223 };
17224
17225 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017227 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017228 {
17229 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17230 }
17231
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017232 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17233 {
17234 return ~( DescriptorPoolCreateFlags( bits ) );
17235 }
17236
17237 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17238 {
17239 enum
17240 {
17241 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17242 };
17243 };
17244
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017245 struct DescriptorPoolCreateInfo
17246 {
17247 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17248 : sType( StructureType::eDescriptorPoolCreateInfo )
17249 , pNext( nullptr )
17250 , flags( flags_ )
17251 , maxSets( maxSets_ )
17252 , poolSizeCount( poolSizeCount_ )
17253 , pPoolSizes( pPoolSizes_ )
17254 {
17255 }
17256
17257 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17258 {
17259 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17260 }
17261
17262 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17263 {
17264 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17265 return *this;
17266 }
17267
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017268 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17269 {
17270 pNext = pNext_;
17271 return *this;
17272 }
17273
17274 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17275 {
17276 flags = flags_;
17277 return *this;
17278 }
17279
17280 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17281 {
17282 maxSets = maxSets_;
17283 return *this;
17284 }
17285
17286 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17287 {
17288 poolSizeCount = poolSizeCount_;
17289 return *this;
17290 }
17291
17292 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17293 {
17294 pPoolSizes = pPoolSizes_;
17295 return *this;
17296 }
17297
17298 operator const VkDescriptorPoolCreateInfo&() const
17299 {
17300 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17301 }
17302
17303 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17304 {
17305 return ( sType == rhs.sType )
17306 && ( pNext == rhs.pNext )
17307 && ( flags == rhs.flags )
17308 && ( maxSets == rhs.maxSets )
17309 && ( poolSizeCount == rhs.poolSizeCount )
17310 && ( pPoolSizes == rhs.pPoolSizes );
17311 }
17312
17313 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17314 {
17315 return !operator==( rhs );
17316 }
17317
17318 private:
17319 StructureType sType;
17320
17321 public:
17322 const void* pNext;
17323 DescriptorPoolCreateFlags flags;
17324 uint32_t maxSets;
17325 uint32_t poolSizeCount;
17326 const DescriptorPoolSize* pPoolSizes;
17327 };
17328 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17329
17330 enum class DependencyFlagBits
17331 {
Mark Young0f183a82017-02-28 09:58:04 -070017332 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17333 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17334 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017335 };
17336
17337 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17338
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017339 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017340 {
17341 return DependencyFlags( bit0 ) | bit1;
17342 }
17343
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017344 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17345 {
17346 return ~( DependencyFlags( bits ) );
17347 }
17348
17349 template <> struct FlagTraits<DependencyFlagBits>
17350 {
17351 enum
17352 {
Mark Young0f183a82017-02-28 09:58:04 -070017353 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017354 };
17355 };
17356
17357 struct SubpassDependency
17358 {
17359 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17360 : srcSubpass( srcSubpass_ )
17361 , dstSubpass( dstSubpass_ )
17362 , srcStageMask( srcStageMask_ )
17363 , dstStageMask( dstStageMask_ )
17364 , srcAccessMask( srcAccessMask_ )
17365 , dstAccessMask( dstAccessMask_ )
17366 , dependencyFlags( dependencyFlags_ )
17367 {
17368 }
17369
17370 SubpassDependency( VkSubpassDependency const & rhs )
17371 {
17372 memcpy( this, &rhs, sizeof(SubpassDependency) );
17373 }
17374
17375 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17376 {
17377 memcpy( this, &rhs, sizeof(SubpassDependency) );
17378 return *this;
17379 }
17380
17381 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17382 {
17383 srcSubpass = srcSubpass_;
17384 return *this;
17385 }
17386
17387 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17388 {
17389 dstSubpass = dstSubpass_;
17390 return *this;
17391 }
17392
17393 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17394 {
17395 srcStageMask = srcStageMask_;
17396 return *this;
17397 }
17398
17399 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17400 {
17401 dstStageMask = dstStageMask_;
17402 return *this;
17403 }
17404
17405 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17406 {
17407 srcAccessMask = srcAccessMask_;
17408 return *this;
17409 }
17410
17411 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17412 {
17413 dstAccessMask = dstAccessMask_;
17414 return *this;
17415 }
17416
17417 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17418 {
17419 dependencyFlags = dependencyFlags_;
17420 return *this;
17421 }
17422
17423 operator const VkSubpassDependency&() const
17424 {
17425 return *reinterpret_cast<const VkSubpassDependency*>(this);
17426 }
17427
17428 bool operator==( SubpassDependency const& rhs ) const
17429 {
17430 return ( srcSubpass == rhs.srcSubpass )
17431 && ( dstSubpass == rhs.dstSubpass )
17432 && ( srcStageMask == rhs.srcStageMask )
17433 && ( dstStageMask == rhs.dstStageMask )
17434 && ( srcAccessMask == rhs.srcAccessMask )
17435 && ( dstAccessMask == rhs.dstAccessMask )
17436 && ( dependencyFlags == rhs.dependencyFlags );
17437 }
17438
17439 bool operator!=( SubpassDependency const& rhs ) const
17440 {
17441 return !operator==( rhs );
17442 }
17443
17444 uint32_t srcSubpass;
17445 uint32_t dstSubpass;
17446 PipelineStageFlags srcStageMask;
17447 PipelineStageFlags dstStageMask;
17448 AccessFlags srcAccessMask;
17449 AccessFlags dstAccessMask;
17450 DependencyFlags dependencyFlags;
17451 };
17452 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17453
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017454 enum class PresentModeKHR
17455 {
17456 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17457 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17458 eFifo = VK_PRESENT_MODE_FIFO_KHR,
17459 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR
17460 };
17461
17462 enum class ColorSpaceKHR
17463 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060017464 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
17465 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
17466 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
17467 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
17468 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
17469 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
17470 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
17471 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
17472 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
17473 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
17474 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
17475 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
17476 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
17477 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017478 };
17479
17480 struct SurfaceFormatKHR
17481 {
17482 operator const VkSurfaceFormatKHR&() const
17483 {
17484 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17485 }
17486
17487 bool operator==( SurfaceFormatKHR const& rhs ) const
17488 {
17489 return ( format == rhs.format )
17490 && ( colorSpace == rhs.colorSpace );
17491 }
17492
17493 bool operator!=( SurfaceFormatKHR const& rhs ) const
17494 {
17495 return !operator==( rhs );
17496 }
17497
17498 Format format;
17499 ColorSpaceKHR colorSpace;
17500 };
17501 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17502
17503 enum class DisplayPlaneAlphaFlagBitsKHR
17504 {
17505 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17506 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17507 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17508 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17509 };
17510
17511 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17512
17513 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17514 {
17515 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17516 }
17517
17518 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17519 {
17520 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17521 }
17522
17523 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17524 {
17525 enum
17526 {
17527 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17528 };
17529 };
17530
17531 struct DisplayPlaneCapabilitiesKHR
17532 {
17533 operator const VkDisplayPlaneCapabilitiesKHR&() const
17534 {
17535 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17536 }
17537
17538 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17539 {
17540 return ( supportedAlpha == rhs.supportedAlpha )
17541 && ( minSrcPosition == rhs.minSrcPosition )
17542 && ( maxSrcPosition == rhs.maxSrcPosition )
17543 && ( minSrcExtent == rhs.minSrcExtent )
17544 && ( maxSrcExtent == rhs.maxSrcExtent )
17545 && ( minDstPosition == rhs.minDstPosition )
17546 && ( maxDstPosition == rhs.maxDstPosition )
17547 && ( minDstExtent == rhs.minDstExtent )
17548 && ( maxDstExtent == rhs.maxDstExtent );
17549 }
17550
17551 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17552 {
17553 return !operator==( rhs );
17554 }
17555
17556 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17557 Offset2D minSrcPosition;
17558 Offset2D maxSrcPosition;
17559 Extent2D minSrcExtent;
17560 Extent2D maxSrcExtent;
17561 Offset2D minDstPosition;
17562 Offset2D maxDstPosition;
17563 Extent2D minDstExtent;
17564 Extent2D maxDstExtent;
17565 };
17566 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17567
17568 enum class CompositeAlphaFlagBitsKHR
17569 {
17570 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17571 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17572 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17573 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17574 };
17575
17576 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17577
17578 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17579 {
17580 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17581 }
17582
17583 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17584 {
17585 return ~( CompositeAlphaFlagsKHR( bits ) );
17586 }
17587
17588 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17589 {
17590 enum
17591 {
17592 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17593 };
17594 };
17595
17596 enum class SurfaceTransformFlagBitsKHR
17597 {
17598 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17599 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17600 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17601 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17602 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17603 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17604 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17605 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17606 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17607 };
17608
17609 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17610
17611 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17612 {
17613 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17614 }
17615
17616 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17617 {
17618 return ~( SurfaceTransformFlagsKHR( bits ) );
17619 }
17620
17621 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17622 {
17623 enum
17624 {
17625 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)
17626 };
17627 };
17628
17629 struct DisplayPropertiesKHR
17630 {
17631 operator const VkDisplayPropertiesKHR&() const
17632 {
17633 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17634 }
17635
17636 bool operator==( DisplayPropertiesKHR const& rhs ) const
17637 {
17638 return ( display == rhs.display )
17639 && ( displayName == rhs.displayName )
17640 && ( physicalDimensions == rhs.physicalDimensions )
17641 && ( physicalResolution == rhs.physicalResolution )
17642 && ( supportedTransforms == rhs.supportedTransforms )
17643 && ( planeReorderPossible == rhs.planeReorderPossible )
17644 && ( persistentContent == rhs.persistentContent );
17645 }
17646
17647 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17648 {
17649 return !operator==( rhs );
17650 }
17651
17652 DisplayKHR display;
17653 const char* displayName;
17654 Extent2D physicalDimensions;
17655 Extent2D physicalResolution;
17656 SurfaceTransformFlagsKHR supportedTransforms;
17657 Bool32 planeReorderPossible;
17658 Bool32 persistentContent;
17659 };
17660 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17661
17662 struct DisplaySurfaceCreateInfoKHR
17663 {
17664 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() )
17665 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17666 , pNext( nullptr )
17667 , flags( flags_ )
17668 , displayMode( displayMode_ )
17669 , planeIndex( planeIndex_ )
17670 , planeStackIndex( planeStackIndex_ )
17671 , transform( transform_ )
17672 , globalAlpha( globalAlpha_ )
17673 , alphaMode( alphaMode_ )
17674 , imageExtent( imageExtent_ )
17675 {
17676 }
17677
17678 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17679 {
17680 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17681 }
17682
17683 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17684 {
17685 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17686 return *this;
17687 }
17688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017689 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17690 {
17691 pNext = pNext_;
17692 return *this;
17693 }
17694
17695 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17696 {
17697 flags = flags_;
17698 return *this;
17699 }
17700
17701 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17702 {
17703 displayMode = displayMode_;
17704 return *this;
17705 }
17706
17707 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17708 {
17709 planeIndex = planeIndex_;
17710 return *this;
17711 }
17712
17713 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17714 {
17715 planeStackIndex = planeStackIndex_;
17716 return *this;
17717 }
17718
17719 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17720 {
17721 transform = transform_;
17722 return *this;
17723 }
17724
17725 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17726 {
17727 globalAlpha = globalAlpha_;
17728 return *this;
17729 }
17730
17731 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17732 {
17733 alphaMode = alphaMode_;
17734 return *this;
17735 }
17736
17737 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17738 {
17739 imageExtent = imageExtent_;
17740 return *this;
17741 }
17742
17743 operator const VkDisplaySurfaceCreateInfoKHR&() const
17744 {
17745 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17746 }
17747
17748 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17749 {
17750 return ( sType == rhs.sType )
17751 && ( pNext == rhs.pNext )
17752 && ( flags == rhs.flags )
17753 && ( displayMode == rhs.displayMode )
17754 && ( planeIndex == rhs.planeIndex )
17755 && ( planeStackIndex == rhs.planeStackIndex )
17756 && ( transform == rhs.transform )
17757 && ( globalAlpha == rhs.globalAlpha )
17758 && ( alphaMode == rhs.alphaMode )
17759 && ( imageExtent == rhs.imageExtent );
17760 }
17761
17762 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17763 {
17764 return !operator==( rhs );
17765 }
17766
17767 private:
17768 StructureType sType;
17769
17770 public:
17771 const void* pNext;
17772 DisplaySurfaceCreateFlagsKHR flags;
17773 DisplayModeKHR displayMode;
17774 uint32_t planeIndex;
17775 uint32_t planeStackIndex;
17776 SurfaceTransformFlagBitsKHR transform;
17777 float globalAlpha;
17778 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17779 Extent2D imageExtent;
17780 };
17781 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17782
17783 struct SurfaceCapabilitiesKHR
17784 {
17785 operator const VkSurfaceCapabilitiesKHR&() const
17786 {
17787 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17788 }
17789
17790 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17791 {
17792 return ( minImageCount == rhs.minImageCount )
17793 && ( maxImageCount == rhs.maxImageCount )
17794 && ( currentExtent == rhs.currentExtent )
17795 && ( minImageExtent == rhs.minImageExtent )
17796 && ( maxImageExtent == rhs.maxImageExtent )
17797 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17798 && ( supportedTransforms == rhs.supportedTransforms )
17799 && ( currentTransform == rhs.currentTransform )
17800 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17801 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17802 }
17803
17804 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17805 {
17806 return !operator==( rhs );
17807 }
17808
17809 uint32_t minImageCount;
17810 uint32_t maxImageCount;
17811 Extent2D currentExtent;
17812 Extent2D minImageExtent;
17813 Extent2D maxImageExtent;
17814 uint32_t maxImageArrayLayers;
17815 SurfaceTransformFlagsKHR supportedTransforms;
17816 SurfaceTransformFlagBitsKHR currentTransform;
17817 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17818 ImageUsageFlags supportedUsageFlags;
17819 };
17820 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017822 enum class DebugReportFlagBitsEXT
17823 {
17824 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
17825 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
17826 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
17827 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
17828 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
17829 };
17830
17831 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
17832
17833 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
17834 {
17835 return DebugReportFlagsEXT( bit0 ) | bit1;
17836 }
17837
17838 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
17839 {
17840 return ~( DebugReportFlagsEXT( bits ) );
17841 }
17842
17843 template <> struct FlagTraits<DebugReportFlagBitsEXT>
17844 {
17845 enum
17846 {
17847 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
17848 };
17849 };
17850
17851 struct DebugReportCallbackCreateInfoEXT
17852 {
17853 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
17854 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
17855 , pNext( nullptr )
17856 , flags( flags_ )
17857 , pfnCallback( pfnCallback_ )
17858 , pUserData( pUserData_ )
17859 {
17860 }
17861
17862 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
17863 {
17864 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17865 }
17866
17867 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
17868 {
17869 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17870 return *this;
17871 }
17872
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017873 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
17874 {
17875 pNext = pNext_;
17876 return *this;
17877 }
17878
17879 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
17880 {
17881 flags = flags_;
17882 return *this;
17883 }
17884
17885 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
17886 {
17887 pfnCallback = pfnCallback_;
17888 return *this;
17889 }
17890
17891 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
17892 {
17893 pUserData = pUserData_;
17894 return *this;
17895 }
17896
17897 operator const VkDebugReportCallbackCreateInfoEXT&() const
17898 {
17899 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
17900 }
17901
17902 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
17903 {
17904 return ( sType == rhs.sType )
17905 && ( pNext == rhs.pNext )
17906 && ( flags == rhs.flags )
17907 && ( pfnCallback == rhs.pfnCallback )
17908 && ( pUserData == rhs.pUserData );
17909 }
17910
17911 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
17912 {
17913 return !operator==( rhs );
17914 }
17915
17916 private:
17917 StructureType sType;
17918
17919 public:
17920 const void* pNext;
17921 DebugReportFlagsEXT flags;
17922 PFN_vkDebugReportCallbackEXT pfnCallback;
17923 void* pUserData;
17924 };
17925 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
17926
17927 enum class DebugReportObjectTypeEXT
17928 {
17929 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
17930 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
17931 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
17932 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
17933 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
17934 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
17935 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
17936 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
17937 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
17938 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
17939 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
17940 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
17941 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
17942 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
17943 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
17944 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
17945 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
17946 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
17947 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
17948 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
17949 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
17950 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
17951 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
17952 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
17953 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
17954 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
17955 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
17956 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
17957 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
17958 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
17959 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
17960 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060017961 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
17962 eDescriptorUpdateTemplateKhrKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017963 };
17964
17965 struct DebugMarkerObjectNameInfoEXT
17966 {
17967 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
17968 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
17969 , pNext( nullptr )
17970 , objectType( objectType_ )
17971 , object( object_ )
17972 , pObjectName( pObjectName_ )
17973 {
17974 }
17975
17976 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
17977 {
17978 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17979 }
17980
17981 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
17982 {
17983 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17984 return *this;
17985 }
17986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017987 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
17988 {
17989 pNext = pNext_;
17990 return *this;
17991 }
17992
17993 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17994 {
17995 objectType = objectType_;
17996 return *this;
17997 }
17998
17999 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
18000 {
18001 object = object_;
18002 return *this;
18003 }
18004
18005 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
18006 {
18007 pObjectName = pObjectName_;
18008 return *this;
18009 }
18010
18011 operator const VkDebugMarkerObjectNameInfoEXT&() const
18012 {
18013 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
18014 }
18015
18016 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
18017 {
18018 return ( sType == rhs.sType )
18019 && ( pNext == rhs.pNext )
18020 && ( objectType == rhs.objectType )
18021 && ( object == rhs.object )
18022 && ( pObjectName == rhs.pObjectName );
18023 }
18024
18025 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
18026 {
18027 return !operator==( rhs );
18028 }
18029
18030 private:
18031 StructureType sType;
18032
18033 public:
18034 const void* pNext;
18035 DebugReportObjectTypeEXT objectType;
18036 uint64_t object;
18037 const char* pObjectName;
18038 };
18039 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
18040
18041 struct DebugMarkerObjectTagInfoEXT
18042 {
18043 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
18044 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
18045 , pNext( nullptr )
18046 , objectType( objectType_ )
18047 , object( object_ )
18048 , tagName( tagName_ )
18049 , tagSize( tagSize_ )
18050 , pTag( pTag_ )
18051 {
18052 }
18053
18054 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
18055 {
18056 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
18057 }
18058
18059 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
18060 {
18061 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
18062 return *this;
18063 }
18064
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018065 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
18066 {
18067 pNext = pNext_;
18068 return *this;
18069 }
18070
18071 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18072 {
18073 objectType = objectType_;
18074 return *this;
18075 }
18076
18077 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
18078 {
18079 object = object_;
18080 return *this;
18081 }
18082
18083 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
18084 {
18085 tagName = tagName_;
18086 return *this;
18087 }
18088
18089 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
18090 {
18091 tagSize = tagSize_;
18092 return *this;
18093 }
18094
18095 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
18096 {
18097 pTag = pTag_;
18098 return *this;
18099 }
18100
18101 operator const VkDebugMarkerObjectTagInfoEXT&() const
18102 {
18103 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
18104 }
18105
18106 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
18107 {
18108 return ( sType == rhs.sType )
18109 && ( pNext == rhs.pNext )
18110 && ( objectType == rhs.objectType )
18111 && ( object == rhs.object )
18112 && ( tagName == rhs.tagName )
18113 && ( tagSize == rhs.tagSize )
18114 && ( pTag == rhs.pTag );
18115 }
18116
18117 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
18118 {
18119 return !operator==( rhs );
18120 }
18121
18122 private:
18123 StructureType sType;
18124
18125 public:
18126 const void* pNext;
18127 DebugReportObjectTypeEXT objectType;
18128 uint64_t object;
18129 uint64_t tagName;
18130 size_t tagSize;
18131 const void* pTag;
18132 };
18133 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
18134
18135 enum class DebugReportErrorEXT
18136 {
18137 eNone = VK_DEBUG_REPORT_ERROR_NONE_EXT,
18138 eCallbackRef = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT
18139 };
18140
18141 enum class RasterizationOrderAMD
18142 {
18143 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
18144 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
18145 };
18146
18147 struct PipelineRasterizationStateRasterizationOrderAMD
18148 {
18149 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
18150 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
18151 , pNext( nullptr )
18152 , rasterizationOrder( rasterizationOrder_ )
18153 {
18154 }
18155
18156 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18157 {
18158 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
18159 }
18160
18161 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18162 {
18163 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
18164 return *this;
18165 }
18166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018167 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
18168 {
18169 pNext = pNext_;
18170 return *this;
18171 }
18172
18173 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
18174 {
18175 rasterizationOrder = rasterizationOrder_;
18176 return *this;
18177 }
18178
18179 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
18180 {
18181 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
18182 }
18183
18184 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18185 {
18186 return ( sType == rhs.sType )
18187 && ( pNext == rhs.pNext )
18188 && ( rasterizationOrder == rhs.rasterizationOrder );
18189 }
18190
18191 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18192 {
18193 return !operator==( rhs );
18194 }
18195
18196 private:
18197 StructureType sType;
18198
18199 public:
18200 const void* pNext;
18201 RasterizationOrderAMD rasterizationOrder;
18202 };
18203 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18204
18205 enum class ExternalMemoryHandleTypeFlagBitsNV
18206 {
18207 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18208 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18209 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18210 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18211 };
18212
18213 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18214
18215 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18216 {
18217 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18218 }
18219
18220 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18221 {
18222 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18223 }
18224
18225 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18226 {
18227 enum
18228 {
18229 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18230 };
18231 };
18232
18233 struct ExternalMemoryImageCreateInfoNV
18234 {
18235 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18236 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18237 , pNext( nullptr )
18238 , handleTypes( handleTypes_ )
18239 {
18240 }
18241
18242 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18243 {
18244 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18245 }
18246
18247 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18248 {
18249 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18250 return *this;
18251 }
18252
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018253 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18254 {
18255 pNext = pNext_;
18256 return *this;
18257 }
18258
18259 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18260 {
18261 handleTypes = handleTypes_;
18262 return *this;
18263 }
18264
18265 operator const VkExternalMemoryImageCreateInfoNV&() const
18266 {
18267 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18268 }
18269
18270 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18271 {
18272 return ( sType == rhs.sType )
18273 && ( pNext == rhs.pNext )
18274 && ( handleTypes == rhs.handleTypes );
18275 }
18276
18277 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18278 {
18279 return !operator==( rhs );
18280 }
18281
18282 private:
18283 StructureType sType;
18284
18285 public:
18286 const void* pNext;
18287 ExternalMemoryHandleTypeFlagsNV handleTypes;
18288 };
18289 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18290
18291 struct ExportMemoryAllocateInfoNV
18292 {
18293 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18294 : sType( StructureType::eExportMemoryAllocateInfoNV )
18295 , pNext( nullptr )
18296 , handleTypes( handleTypes_ )
18297 {
18298 }
18299
18300 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18301 {
18302 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18303 }
18304
18305 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18306 {
18307 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18308 return *this;
18309 }
18310
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018311 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18312 {
18313 pNext = pNext_;
18314 return *this;
18315 }
18316
18317 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18318 {
18319 handleTypes = handleTypes_;
18320 return *this;
18321 }
18322
18323 operator const VkExportMemoryAllocateInfoNV&() const
18324 {
18325 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18326 }
18327
18328 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18329 {
18330 return ( sType == rhs.sType )
18331 && ( pNext == rhs.pNext )
18332 && ( handleTypes == rhs.handleTypes );
18333 }
18334
18335 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18336 {
18337 return !operator==( rhs );
18338 }
18339
18340 private:
18341 StructureType sType;
18342
18343 public:
18344 const void* pNext;
18345 ExternalMemoryHandleTypeFlagsNV handleTypes;
18346 };
18347 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18348
18349#ifdef VK_USE_PLATFORM_WIN32_KHR
18350 struct ImportMemoryWin32HandleInfoNV
18351 {
18352 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18353 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18354 , pNext( nullptr )
18355 , handleType( handleType_ )
18356 , handle( handle_ )
18357 {
18358 }
18359
18360 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18361 {
18362 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18363 }
18364
18365 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18366 {
18367 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18368 return *this;
18369 }
18370
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018371 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18372 {
18373 pNext = pNext_;
18374 return *this;
18375 }
18376
18377 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18378 {
18379 handleType = handleType_;
18380 return *this;
18381 }
18382
18383 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18384 {
18385 handle = handle_;
18386 return *this;
18387 }
18388
18389 operator const VkImportMemoryWin32HandleInfoNV&() const
18390 {
18391 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18392 }
18393
18394 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18395 {
18396 return ( sType == rhs.sType )
18397 && ( pNext == rhs.pNext )
18398 && ( handleType == rhs.handleType )
18399 && ( handle == rhs.handle );
18400 }
18401
18402 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18403 {
18404 return !operator==( rhs );
18405 }
18406
18407 private:
18408 StructureType sType;
18409
18410 public:
18411 const void* pNext;
18412 ExternalMemoryHandleTypeFlagsNV handleType;
18413 HANDLE handle;
18414 };
18415 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18416#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18417
18418 enum class ExternalMemoryFeatureFlagBitsNV
18419 {
18420 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18421 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18422 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18423 };
18424
18425 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18426
18427 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18428 {
18429 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18430 }
18431
18432 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18433 {
18434 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18435 }
18436
18437 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18438 {
18439 enum
18440 {
18441 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18442 };
18443 };
18444
18445 struct ExternalImageFormatPropertiesNV
18446 {
18447 operator const VkExternalImageFormatPropertiesNV&() const
18448 {
18449 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18450 }
18451
18452 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18453 {
18454 return ( imageFormatProperties == rhs.imageFormatProperties )
18455 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18456 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18457 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18458 }
18459
18460 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18461 {
18462 return !operator==( rhs );
18463 }
18464
18465 ImageFormatProperties imageFormatProperties;
18466 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18467 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18468 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18469 };
18470 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18471
18472 enum class ValidationCheckEXT
18473 {
18474 eAll = VK_VALIDATION_CHECK_ALL_EXT
18475 };
18476
18477 struct ValidationFlagsEXT
18478 {
18479 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18480 : sType( StructureType::eValidationFlagsEXT )
18481 , pNext( nullptr )
18482 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18483 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18484 {
18485 }
18486
18487 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18488 {
18489 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18490 }
18491
18492 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18493 {
18494 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18495 return *this;
18496 }
18497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018498 ValidationFlagsEXT& setPNext( const void* pNext_ )
18499 {
18500 pNext = pNext_;
18501 return *this;
18502 }
18503
18504 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18505 {
18506 disabledValidationCheckCount = disabledValidationCheckCount_;
18507 return *this;
18508 }
18509
18510 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18511 {
18512 pDisabledValidationChecks = pDisabledValidationChecks_;
18513 return *this;
18514 }
18515
18516 operator const VkValidationFlagsEXT&() const
18517 {
18518 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18519 }
18520
18521 bool operator==( ValidationFlagsEXT const& rhs ) const
18522 {
18523 return ( sType == rhs.sType )
18524 && ( pNext == rhs.pNext )
18525 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18526 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18527 }
18528
18529 bool operator!=( ValidationFlagsEXT const& rhs ) const
18530 {
18531 return !operator==( rhs );
18532 }
18533
18534 private:
18535 StructureType sType;
18536
18537 public:
18538 const void* pNext;
18539 uint32_t disabledValidationCheckCount;
18540 ValidationCheckEXT* pDisabledValidationChecks;
18541 };
18542 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18543
18544 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18545 {
18546 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18547 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18548 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18549 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18550 };
18551
18552 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18553
18554 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18555 {
18556 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18557 }
18558
18559 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18560 {
18561 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18562 }
18563
18564 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18565 {
18566 enum
18567 {
18568 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18569 };
18570 };
18571
18572 enum class ObjectEntryUsageFlagBitsNVX
18573 {
18574 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18575 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18576 };
18577
18578 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18579
18580 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18581 {
18582 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18583 }
18584
18585 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18586 {
18587 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18588 }
18589
18590 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18591 {
18592 enum
18593 {
18594 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18595 };
18596 };
18597
18598 enum class IndirectCommandsTokenTypeNVX
18599 {
18600 eVkIndirectCommandsTokenPipeline = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
18601 eVkIndirectCommandsTokenDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX,
18602 eVkIndirectCommandsTokenIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX,
18603 eVkIndirectCommandsTokenVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX,
18604 eVkIndirectCommandsTokenPushConstant = VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX,
18605 eVkIndirectCommandsTokenDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX,
18606 eVkIndirectCommandsTokenDraw = VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX,
18607 eVkIndirectCommandsTokenDispatch = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX
18608 };
18609
18610 struct IndirectCommandsTokenNVX
18611 {
18612 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
18613 : tokenType( tokenType_ )
18614 , buffer( buffer_ )
18615 , offset( offset_ )
18616 {
18617 }
18618
18619 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18620 {
18621 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18622 }
18623
18624 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18625 {
18626 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18627 return *this;
18628 }
18629
18630 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18631 {
18632 tokenType = tokenType_;
18633 return *this;
18634 }
18635
18636 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18637 {
18638 buffer = buffer_;
18639 return *this;
18640 }
18641
18642 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18643 {
18644 offset = offset_;
18645 return *this;
18646 }
18647
18648 operator const VkIndirectCommandsTokenNVX&() const
18649 {
18650 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18651 }
18652
18653 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18654 {
18655 return ( tokenType == rhs.tokenType )
18656 && ( buffer == rhs.buffer )
18657 && ( offset == rhs.offset );
18658 }
18659
18660 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18661 {
18662 return !operator==( rhs );
18663 }
18664
18665 IndirectCommandsTokenTypeNVX tokenType;
18666 Buffer buffer;
18667 DeviceSize offset;
18668 };
18669 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18670
18671 struct IndirectCommandsLayoutTokenNVX
18672 {
18673 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
18674 : tokenType( tokenType_ )
18675 , bindingUnit( bindingUnit_ )
18676 , dynamicCount( dynamicCount_ )
18677 , divisor( divisor_ )
18678 {
18679 }
18680
18681 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18682 {
18683 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18684 }
18685
18686 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18687 {
18688 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18689 return *this;
18690 }
18691
18692 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18693 {
18694 tokenType = tokenType_;
18695 return *this;
18696 }
18697
18698 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18699 {
18700 bindingUnit = bindingUnit_;
18701 return *this;
18702 }
18703
18704 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18705 {
18706 dynamicCount = dynamicCount_;
18707 return *this;
18708 }
18709
18710 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18711 {
18712 divisor = divisor_;
18713 return *this;
18714 }
18715
18716 operator const VkIndirectCommandsLayoutTokenNVX&() const
18717 {
18718 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18719 }
18720
18721 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18722 {
18723 return ( tokenType == rhs.tokenType )
18724 && ( bindingUnit == rhs.bindingUnit )
18725 && ( dynamicCount == rhs.dynamicCount )
18726 && ( divisor == rhs.divisor );
18727 }
18728
18729 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18730 {
18731 return !operator==( rhs );
18732 }
18733
18734 IndirectCommandsTokenTypeNVX tokenType;
18735 uint32_t bindingUnit;
18736 uint32_t dynamicCount;
18737 uint32_t divisor;
18738 };
18739 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18740
18741 struct IndirectCommandsLayoutCreateInfoNVX
18742 {
18743 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18744 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18745 , pNext( nullptr )
18746 , pipelineBindPoint( pipelineBindPoint_ )
18747 , flags( flags_ )
18748 , tokenCount( tokenCount_ )
18749 , pTokens( pTokens_ )
18750 {
18751 }
18752
18753 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18754 {
18755 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18756 }
18757
18758 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18759 {
18760 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18761 return *this;
18762 }
18763
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018764 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18765 {
18766 pNext = pNext_;
18767 return *this;
18768 }
18769
18770 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18771 {
18772 pipelineBindPoint = pipelineBindPoint_;
18773 return *this;
18774 }
18775
18776 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18777 {
18778 flags = flags_;
18779 return *this;
18780 }
18781
18782 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18783 {
18784 tokenCount = tokenCount_;
18785 return *this;
18786 }
18787
18788 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18789 {
18790 pTokens = pTokens_;
18791 return *this;
18792 }
18793
18794 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18795 {
18796 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18797 }
18798
18799 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18800 {
18801 return ( sType == rhs.sType )
18802 && ( pNext == rhs.pNext )
18803 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18804 && ( flags == rhs.flags )
18805 && ( tokenCount == rhs.tokenCount )
18806 && ( pTokens == rhs.pTokens );
18807 }
18808
18809 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18810 {
18811 return !operator==( rhs );
18812 }
18813
18814 private:
18815 StructureType sType;
18816
18817 public:
18818 const void* pNext;
18819 PipelineBindPoint pipelineBindPoint;
18820 IndirectCommandsLayoutUsageFlagsNVX flags;
18821 uint32_t tokenCount;
18822 const IndirectCommandsLayoutTokenNVX* pTokens;
18823 };
18824 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
18825
18826 enum class ObjectEntryTypeNVX
18827 {
18828 eVkObjectEntryDescriptorSet = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
18829 eVkObjectEntryPipeline = VK_OBJECT_ENTRY_PIPELINE_NVX,
18830 eVkObjectEntryIndexBuffer = VK_OBJECT_ENTRY_INDEX_BUFFER_NVX,
18831 eVkObjectEntryVertexBuffer = VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX,
18832 eVkObjectEntryPushConstant = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX
18833 };
18834
18835 struct ObjectTableCreateInfoNVX
18836 {
18837 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 )
18838 : sType( StructureType::eObjectTableCreateInfoNVX )
18839 , pNext( nullptr )
18840 , objectCount( objectCount_ )
18841 , pObjectEntryTypes( pObjectEntryTypes_ )
18842 , pObjectEntryCounts( pObjectEntryCounts_ )
18843 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
18844 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
18845 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
18846 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
18847 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
18848 , maxPipelineLayouts( maxPipelineLayouts_ )
18849 {
18850 }
18851
18852 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
18853 {
18854 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18855 }
18856
18857 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
18858 {
18859 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18860 return *this;
18861 }
18862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018863 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
18864 {
18865 pNext = pNext_;
18866 return *this;
18867 }
18868
18869 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
18870 {
18871 objectCount = objectCount_;
18872 return *this;
18873 }
18874
18875 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
18876 {
18877 pObjectEntryTypes = pObjectEntryTypes_;
18878 return *this;
18879 }
18880
18881 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
18882 {
18883 pObjectEntryCounts = pObjectEntryCounts_;
18884 return *this;
18885 }
18886
18887 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
18888 {
18889 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
18890 return *this;
18891 }
18892
18893 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
18894 {
18895 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
18896 return *this;
18897 }
18898
18899 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
18900 {
18901 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
18902 return *this;
18903 }
18904
18905 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
18906 {
18907 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
18908 return *this;
18909 }
18910
18911 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
18912 {
18913 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
18914 return *this;
18915 }
18916
18917 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
18918 {
18919 maxPipelineLayouts = maxPipelineLayouts_;
18920 return *this;
18921 }
18922
18923 operator const VkObjectTableCreateInfoNVX&() const
18924 {
18925 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
18926 }
18927
18928 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
18929 {
18930 return ( sType == rhs.sType )
18931 && ( pNext == rhs.pNext )
18932 && ( objectCount == rhs.objectCount )
18933 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
18934 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
18935 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
18936 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
18937 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
18938 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
18939 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
18940 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
18941 }
18942
18943 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
18944 {
18945 return !operator==( rhs );
18946 }
18947
18948 private:
18949 StructureType sType;
18950
18951 public:
18952 const void* pNext;
18953 uint32_t objectCount;
18954 const ObjectEntryTypeNVX* pObjectEntryTypes;
18955 const uint32_t* pObjectEntryCounts;
18956 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
18957 uint32_t maxUniformBuffersPerDescriptor;
18958 uint32_t maxStorageBuffersPerDescriptor;
18959 uint32_t maxStorageImagesPerDescriptor;
18960 uint32_t maxSampledImagesPerDescriptor;
18961 uint32_t maxPipelineLayouts;
18962 };
18963 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
18964
18965 struct ObjectTableEntryNVX
18966 {
18967 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
18968 : type( type_ )
18969 , flags( flags_ )
18970 {
18971 }
18972
18973 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
18974 {
18975 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18976 }
18977
18978 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
18979 {
18980 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18981 return *this;
18982 }
18983
18984 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
18985 {
18986 type = type_;
18987 return *this;
18988 }
18989
18990 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18991 {
18992 flags = flags_;
18993 return *this;
18994 }
18995
18996 operator const VkObjectTableEntryNVX&() const
18997 {
18998 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
18999 }
19000
19001 bool operator==( ObjectTableEntryNVX const& rhs ) const
19002 {
19003 return ( type == rhs.type )
19004 && ( flags == rhs.flags );
19005 }
19006
19007 bool operator!=( ObjectTableEntryNVX const& rhs ) const
19008 {
19009 return !operator==( rhs );
19010 }
19011
19012 ObjectEntryTypeNVX type;
19013 ObjectEntryUsageFlagsNVX flags;
19014 };
19015 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
19016
19017 struct ObjectTablePipelineEntryNVX
19018 {
19019 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
19020 : type( type_ )
19021 , flags( flags_ )
19022 , pipeline( pipeline_ )
19023 {
19024 }
19025
19026 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
19027 {
19028 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
19029 }
19030
19031 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
19032 {
19033 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
19034 return *this;
19035 }
19036
19037 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
19038 {
19039 type = type_;
19040 return *this;
19041 }
19042
19043 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19044 {
19045 flags = flags_;
19046 return *this;
19047 }
19048
19049 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
19050 {
19051 pipeline = pipeline_;
19052 return *this;
19053 }
19054
19055 operator const VkObjectTablePipelineEntryNVX&() const
19056 {
19057 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
19058 }
19059
19060 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
19061 {
19062 return ( type == rhs.type )
19063 && ( flags == rhs.flags )
19064 && ( pipeline == rhs.pipeline );
19065 }
19066
19067 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
19068 {
19069 return !operator==( rhs );
19070 }
19071
19072 ObjectEntryTypeNVX type;
19073 ObjectEntryUsageFlagsNVX flags;
19074 Pipeline pipeline;
19075 };
19076 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
19077
19078 struct ObjectTableDescriptorSetEntryNVX
19079 {
19080 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
19081 : type( type_ )
19082 , flags( flags_ )
19083 , pipelineLayout( pipelineLayout_ )
19084 , descriptorSet( descriptorSet_ )
19085 {
19086 }
19087
19088 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
19089 {
19090 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
19091 }
19092
19093 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
19094 {
19095 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
19096 return *this;
19097 }
19098
19099 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
19100 {
19101 type = type_;
19102 return *this;
19103 }
19104
19105 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19106 {
19107 flags = flags_;
19108 return *this;
19109 }
19110
19111 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19112 {
19113 pipelineLayout = pipelineLayout_;
19114 return *this;
19115 }
19116
19117 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
19118 {
19119 descriptorSet = descriptorSet_;
19120 return *this;
19121 }
19122
19123 operator const VkObjectTableDescriptorSetEntryNVX&() const
19124 {
19125 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
19126 }
19127
19128 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19129 {
19130 return ( type == rhs.type )
19131 && ( flags == rhs.flags )
19132 && ( pipelineLayout == rhs.pipelineLayout )
19133 && ( descriptorSet == rhs.descriptorSet );
19134 }
19135
19136 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19137 {
19138 return !operator==( rhs );
19139 }
19140
19141 ObjectEntryTypeNVX type;
19142 ObjectEntryUsageFlagsNVX flags;
19143 PipelineLayout pipelineLayout;
19144 DescriptorSet descriptorSet;
19145 };
19146 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
19147
19148 struct ObjectTableVertexBufferEntryNVX
19149 {
19150 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
19151 : type( type_ )
19152 , flags( flags_ )
19153 , buffer( buffer_ )
19154 {
19155 }
19156
19157 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
19158 {
19159 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
19160 }
19161
19162 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
19163 {
19164 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
19165 return *this;
19166 }
19167
19168 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19169 {
19170 type = type_;
19171 return *this;
19172 }
19173
19174 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19175 {
19176 flags = flags_;
19177 return *this;
19178 }
19179
19180 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
19181 {
19182 buffer = buffer_;
19183 return *this;
19184 }
19185
19186 operator const VkObjectTableVertexBufferEntryNVX&() const
19187 {
19188 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
19189 }
19190
19191 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19192 {
19193 return ( type == rhs.type )
19194 && ( flags == rhs.flags )
19195 && ( buffer == rhs.buffer );
19196 }
19197
19198 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19199 {
19200 return !operator==( rhs );
19201 }
19202
19203 ObjectEntryTypeNVX type;
19204 ObjectEntryUsageFlagsNVX flags;
19205 Buffer buffer;
19206 };
19207 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19208
19209 struct ObjectTableIndexBufferEntryNVX
19210 {
Mark Young39389872017-01-19 21:10:49 -070019211 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019212 : type( type_ )
19213 , flags( flags_ )
19214 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019215 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019216 {
19217 }
19218
19219 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19220 {
19221 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19222 }
19223
19224 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19225 {
19226 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19227 return *this;
19228 }
19229
19230 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19231 {
19232 type = type_;
19233 return *this;
19234 }
19235
19236 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19237 {
19238 flags = flags_;
19239 return *this;
19240 }
19241
19242 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19243 {
19244 buffer = buffer_;
19245 return *this;
19246 }
19247
Mark Young39389872017-01-19 21:10:49 -070019248 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19249 {
19250 indexType = indexType_;
19251 return *this;
19252 }
19253
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019254 operator const VkObjectTableIndexBufferEntryNVX&() const
19255 {
19256 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19257 }
19258
19259 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19260 {
19261 return ( type == rhs.type )
19262 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019263 && ( buffer == rhs.buffer )
19264 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019265 }
19266
19267 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19268 {
19269 return !operator==( rhs );
19270 }
19271
19272 ObjectEntryTypeNVX type;
19273 ObjectEntryUsageFlagsNVX flags;
19274 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019275 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019276 };
19277 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19278
19279 struct ObjectTablePushConstantEntryNVX
19280 {
19281 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
19282 : type( type_ )
19283 , flags( flags_ )
19284 , pipelineLayout( pipelineLayout_ )
19285 , stageFlags( stageFlags_ )
19286 {
19287 }
19288
19289 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19290 {
19291 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19292 }
19293
19294 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19295 {
19296 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19297 return *this;
19298 }
19299
19300 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19301 {
19302 type = type_;
19303 return *this;
19304 }
19305
19306 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19307 {
19308 flags = flags_;
19309 return *this;
19310 }
19311
19312 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19313 {
19314 pipelineLayout = pipelineLayout_;
19315 return *this;
19316 }
19317
19318 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19319 {
19320 stageFlags = stageFlags_;
19321 return *this;
19322 }
19323
19324 operator const VkObjectTablePushConstantEntryNVX&() const
19325 {
19326 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19327 }
19328
19329 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19330 {
19331 return ( type == rhs.type )
19332 && ( flags == rhs.flags )
19333 && ( pipelineLayout == rhs.pipelineLayout )
19334 && ( stageFlags == rhs.stageFlags );
19335 }
19336
19337 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19338 {
19339 return !operator==( rhs );
19340 }
19341
19342 ObjectEntryTypeNVX type;
19343 ObjectEntryUsageFlagsNVX flags;
19344 PipelineLayout pipelineLayout;
19345 ShaderStageFlags stageFlags;
19346 };
19347 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19348
Mark Young0f183a82017-02-28 09:58:04 -070019349 enum class DescriptorSetLayoutCreateFlagBits
19350 {
19351 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19352 };
19353
19354 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19355
19356 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19357 {
19358 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19359 }
19360
19361 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19362 {
19363 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19364 }
19365
19366 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19367 {
19368 enum
19369 {
19370 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19371 };
19372 };
19373
19374 struct DescriptorSetLayoutCreateInfo
19375 {
19376 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19377 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19378 , pNext( nullptr )
19379 , flags( flags_ )
19380 , bindingCount( bindingCount_ )
19381 , pBindings( pBindings_ )
19382 {
19383 }
19384
19385 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19386 {
19387 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19388 }
19389
19390 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19391 {
19392 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19393 return *this;
19394 }
19395
19396 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19397 {
19398 pNext = pNext_;
19399 return *this;
19400 }
19401
19402 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19403 {
19404 flags = flags_;
19405 return *this;
19406 }
19407
19408 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19409 {
19410 bindingCount = bindingCount_;
19411 return *this;
19412 }
19413
19414 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19415 {
19416 pBindings = pBindings_;
19417 return *this;
19418 }
19419
19420 operator const VkDescriptorSetLayoutCreateInfo&() const
19421 {
19422 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19423 }
19424
19425 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19426 {
19427 return ( sType == rhs.sType )
19428 && ( pNext == rhs.pNext )
19429 && ( flags == rhs.flags )
19430 && ( bindingCount == rhs.bindingCount )
19431 && ( pBindings == rhs.pBindings );
19432 }
19433
19434 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19435 {
19436 return !operator==( rhs );
19437 }
19438
19439 private:
19440 StructureType sType;
19441
19442 public:
19443 const void* pNext;
19444 DescriptorSetLayoutCreateFlags flags;
19445 uint32_t bindingCount;
19446 const DescriptorSetLayoutBinding* pBindings;
19447 };
19448 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19449
19450 enum class ExternalMemoryHandleTypeFlagBitsKHX
19451 {
19452 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19453 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19454 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19455 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19456 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19457 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19458 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19459 };
19460
19461 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19462
19463 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19464 {
19465 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19466 }
19467
19468 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19469 {
19470 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19471 }
19472
19473 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19474 {
19475 enum
19476 {
19477 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19478 };
19479 };
19480
19481 struct PhysicalDeviceExternalImageFormatInfoKHX
19482 {
19483 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19484 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19485 , pNext( nullptr )
19486 , handleType( handleType_ )
19487 {
19488 }
19489
19490 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19491 {
19492 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19493 }
19494
19495 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19496 {
19497 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19498 return *this;
19499 }
19500
19501 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19502 {
19503 pNext = pNext_;
19504 return *this;
19505 }
19506
19507 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19508 {
19509 handleType = handleType_;
19510 return *this;
19511 }
19512
19513 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19514 {
19515 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19516 }
19517
19518 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19519 {
19520 return ( sType == rhs.sType )
19521 && ( pNext == rhs.pNext )
19522 && ( handleType == rhs.handleType );
19523 }
19524
19525 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19526 {
19527 return !operator==( rhs );
19528 }
19529
19530 private:
19531 StructureType sType;
19532
19533 public:
19534 const void* pNext;
19535 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19536 };
19537 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19538
19539 struct PhysicalDeviceExternalBufferInfoKHX
19540 {
19541 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19542 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19543 , pNext( nullptr )
19544 , flags( flags_ )
19545 , usage( usage_ )
19546 , handleType( handleType_ )
19547 {
19548 }
19549
19550 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19551 {
19552 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19553 }
19554
19555 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19556 {
19557 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19558 return *this;
19559 }
19560
19561 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19562 {
19563 pNext = pNext_;
19564 return *this;
19565 }
19566
19567 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19568 {
19569 flags = flags_;
19570 return *this;
19571 }
19572
19573 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19574 {
19575 usage = usage_;
19576 return *this;
19577 }
19578
19579 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19580 {
19581 handleType = handleType_;
19582 return *this;
19583 }
19584
19585 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19586 {
19587 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19588 }
19589
19590 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19591 {
19592 return ( sType == rhs.sType )
19593 && ( pNext == rhs.pNext )
19594 && ( flags == rhs.flags )
19595 && ( usage == rhs.usage )
19596 && ( handleType == rhs.handleType );
19597 }
19598
19599 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19600 {
19601 return !operator==( rhs );
19602 }
19603
19604 private:
19605 StructureType sType;
19606
19607 public:
19608 const void* pNext;
19609 BufferCreateFlags flags;
19610 BufferUsageFlags usage;
19611 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19612 };
19613 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19614
19615 struct ExternalMemoryImageCreateInfoKHX
19616 {
19617 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19618 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19619 , pNext( nullptr )
19620 , handleTypes( handleTypes_ )
19621 {
19622 }
19623
19624 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19625 {
19626 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19627 }
19628
19629 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19630 {
19631 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19632 return *this;
19633 }
19634
19635 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19636 {
19637 pNext = pNext_;
19638 return *this;
19639 }
19640
19641 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19642 {
19643 handleTypes = handleTypes_;
19644 return *this;
19645 }
19646
19647 operator const VkExternalMemoryImageCreateInfoKHX&() const
19648 {
19649 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19650 }
19651
19652 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19653 {
19654 return ( sType == rhs.sType )
19655 && ( pNext == rhs.pNext )
19656 && ( handleTypes == rhs.handleTypes );
19657 }
19658
19659 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19660 {
19661 return !operator==( rhs );
19662 }
19663
19664 private:
19665 StructureType sType;
19666
19667 public:
19668 const void* pNext;
19669 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19670 };
19671 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19672
19673 struct ExternalMemoryBufferCreateInfoKHX
19674 {
19675 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19676 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19677 , pNext( nullptr )
19678 , handleTypes( handleTypes_ )
19679 {
19680 }
19681
19682 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19683 {
19684 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19685 }
19686
19687 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19688 {
19689 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19690 return *this;
19691 }
19692
19693 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19694 {
19695 pNext = pNext_;
19696 return *this;
19697 }
19698
19699 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19700 {
19701 handleTypes = handleTypes_;
19702 return *this;
19703 }
19704
19705 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19706 {
19707 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19708 }
19709
19710 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19711 {
19712 return ( sType == rhs.sType )
19713 && ( pNext == rhs.pNext )
19714 && ( handleTypes == rhs.handleTypes );
19715 }
19716
19717 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19718 {
19719 return !operator==( rhs );
19720 }
19721
19722 private:
19723 StructureType sType;
19724
19725 public:
19726 const void* pNext;
19727 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19728 };
19729 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19730
19731 struct ExportMemoryAllocateInfoKHX
19732 {
19733 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19734 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19735 , pNext( nullptr )
19736 , handleTypes( handleTypes_ )
19737 {
19738 }
19739
19740 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19741 {
19742 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19743 }
19744
19745 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19746 {
19747 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19748 return *this;
19749 }
19750
19751 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19752 {
19753 pNext = pNext_;
19754 return *this;
19755 }
19756
19757 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19758 {
19759 handleTypes = handleTypes_;
19760 return *this;
19761 }
19762
19763 operator const VkExportMemoryAllocateInfoKHX&() const
19764 {
19765 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19766 }
19767
19768 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19769 {
19770 return ( sType == rhs.sType )
19771 && ( pNext == rhs.pNext )
19772 && ( handleTypes == rhs.handleTypes );
19773 }
19774
19775 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19776 {
19777 return !operator==( rhs );
19778 }
19779
19780 private:
19781 StructureType sType;
19782
19783 public:
19784 const void* pNext;
19785 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19786 };
19787 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19788
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019789#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070019790 struct ImportMemoryWin32HandleInfoKHX
19791 {
19792 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19793 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19794 , pNext( nullptr )
19795 , handleType( handleType_ )
19796 , handle( handle_ )
19797 {
19798 }
19799
19800 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19801 {
19802 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19803 }
19804
19805 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19806 {
19807 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19808 return *this;
19809 }
19810
19811 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19812 {
19813 pNext = pNext_;
19814 return *this;
19815 }
19816
19817 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19818 {
19819 handleType = handleType_;
19820 return *this;
19821 }
19822
19823 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
19824 {
19825 handle = handle_;
19826 return *this;
19827 }
19828
19829 operator const VkImportMemoryWin32HandleInfoKHX&() const
19830 {
19831 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
19832 }
19833
19834 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19835 {
19836 return ( sType == rhs.sType )
19837 && ( pNext == rhs.pNext )
19838 && ( handleType == rhs.handleType )
19839 && ( handle == rhs.handle );
19840 }
19841
19842 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19843 {
19844 return !operator==( rhs );
19845 }
19846
19847 private:
19848 StructureType sType;
19849
19850 public:
19851 const void* pNext;
19852 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19853 HANDLE handle;
19854 };
19855 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019856#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070019857
19858 struct ImportMemoryFdInfoKHX
19859 {
19860 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
19861 : sType( StructureType::eImportMemoryFdInfoKHX )
19862 , pNext( nullptr )
19863 , handleType( handleType_ )
19864 , fd( fd_ )
19865 {
19866 }
19867
19868 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
19869 {
19870 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19871 }
19872
19873 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
19874 {
19875 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19876 return *this;
19877 }
19878
19879 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
19880 {
19881 pNext = pNext_;
19882 return *this;
19883 }
19884
19885 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19886 {
19887 handleType = handleType_;
19888 return *this;
19889 }
19890
19891 ImportMemoryFdInfoKHX& setFd( int fd_ )
19892 {
19893 fd = fd_;
19894 return *this;
19895 }
19896
19897 operator const VkImportMemoryFdInfoKHX&() const
19898 {
19899 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
19900 }
19901
19902 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
19903 {
19904 return ( sType == rhs.sType )
19905 && ( pNext == rhs.pNext )
19906 && ( handleType == rhs.handleType )
19907 && ( fd == rhs.fd );
19908 }
19909
19910 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
19911 {
19912 return !operator==( rhs );
19913 }
19914
19915 private:
19916 StructureType sType;
19917
19918 public:
19919 const void* pNext;
19920 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19921 int fd;
19922 };
19923 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
19924
19925 enum class ExternalMemoryFeatureFlagBitsKHX
19926 {
19927 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
19928 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
19929 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
19930 };
19931
19932 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
19933
19934 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
19935 {
19936 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
19937 }
19938
19939 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
19940 {
19941 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
19942 }
19943
19944 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
19945 {
19946 enum
19947 {
19948 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
19949 };
19950 };
19951
19952 struct ExternalMemoryPropertiesKHX
19953 {
19954 operator const VkExternalMemoryPropertiesKHX&() const
19955 {
19956 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
19957 }
19958
19959 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
19960 {
19961 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19962 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19963 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19964 }
19965
19966 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
19967 {
19968 return !operator==( rhs );
19969 }
19970
19971 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
19972 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
19973 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
19974 };
19975 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
19976
19977 struct ExternalImageFormatPropertiesKHX
19978 {
19979 operator const VkExternalImageFormatPropertiesKHX&() const
19980 {
19981 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
19982 }
19983
19984 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
19985 {
19986 return ( sType == rhs.sType )
19987 && ( pNext == rhs.pNext )
19988 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19989 }
19990
19991 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
19992 {
19993 return !operator==( rhs );
19994 }
19995
19996 private:
19997 StructureType sType;
19998
19999 public:
20000 void* pNext;
20001 ExternalMemoryPropertiesKHX externalMemoryProperties;
20002 };
20003 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
20004
20005 struct ExternalBufferPropertiesKHX
20006 {
20007 operator const VkExternalBufferPropertiesKHX&() const
20008 {
20009 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
20010 }
20011
20012 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
20013 {
20014 return ( sType == rhs.sType )
20015 && ( pNext == rhs.pNext )
20016 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20017 }
20018
20019 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
20020 {
20021 return !operator==( rhs );
20022 }
20023
20024 private:
20025 StructureType sType;
20026
20027 public:
20028 void* pNext;
20029 ExternalMemoryPropertiesKHX externalMemoryProperties;
20030 };
20031 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
20032
20033 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
20034 {
20035 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
20036 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
20037 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
20038 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
20039 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
20040 };
20041
20042 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
20043
20044 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
20045 {
20046 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
20047 }
20048
20049 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
20050 {
20051 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
20052 }
20053
20054 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
20055 {
20056 enum
20057 {
20058 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
20059 };
20060 };
20061
20062 struct PhysicalDeviceExternalSemaphoreInfoKHX
20063 {
20064 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
20065 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
20066 , pNext( nullptr )
20067 , handleType( handleType_ )
20068 {
20069 }
20070
20071 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20072 {
20073 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
20074 }
20075
20076 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20077 {
20078 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
20079 return *this;
20080 }
20081
20082 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
20083 {
20084 pNext = pNext_;
20085 return *this;
20086 }
20087
20088 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20089 {
20090 handleType = handleType_;
20091 return *this;
20092 }
20093
20094 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
20095 {
20096 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
20097 }
20098
20099 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20100 {
20101 return ( sType == rhs.sType )
20102 && ( pNext == rhs.pNext )
20103 && ( handleType == rhs.handleType );
20104 }
20105
20106 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20107 {
20108 return !operator==( rhs );
20109 }
20110
20111 private:
20112 StructureType sType;
20113
20114 public:
20115 const void* pNext;
20116 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20117 };
20118 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
20119
20120 struct ExportSemaphoreCreateInfoKHX
20121 {
20122 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
20123 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
20124 , pNext( nullptr )
20125 , handleTypes( handleTypes_ )
20126 {
20127 }
20128
20129 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
20130 {
20131 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
20132 }
20133
20134 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
20135 {
20136 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
20137 return *this;
20138 }
20139
20140 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
20141 {
20142 pNext = pNext_;
20143 return *this;
20144 }
20145
20146 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
20147 {
20148 handleTypes = handleTypes_;
20149 return *this;
20150 }
20151
20152 operator const VkExportSemaphoreCreateInfoKHX&() const
20153 {
20154 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
20155 }
20156
20157 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
20158 {
20159 return ( sType == rhs.sType )
20160 && ( pNext == rhs.pNext )
20161 && ( handleTypes == rhs.handleTypes );
20162 }
20163
20164 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
20165 {
20166 return !operator==( rhs );
20167 }
20168
20169 private:
20170 StructureType sType;
20171
20172 public:
20173 const void* pNext;
20174 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
20175 };
20176 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
20177
20178#ifdef VK_USE_PLATFORM_WIN32_KHX
20179 struct ImportSemaphoreWin32HandleInfoKHX
20180 {
20181 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
20182 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
20183 , pNext( nullptr )
20184 , semaphore( semaphore_ )
20185 , handleType( handleType_ )
20186 , handle( handle_ )
20187 {
20188 }
20189
20190 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20191 {
20192 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20193 }
20194
20195 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20196 {
20197 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20198 return *this;
20199 }
20200
20201 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20202 {
20203 pNext = pNext_;
20204 return *this;
20205 }
20206
20207 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20208 {
20209 semaphore = semaphore_;
20210 return *this;
20211 }
20212
20213 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20214 {
20215 handleType = handleType_;
20216 return *this;
20217 }
20218
20219 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20220 {
20221 handle = handle_;
20222 return *this;
20223 }
20224
20225 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20226 {
20227 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20228 }
20229
20230 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20231 {
20232 return ( sType == rhs.sType )
20233 && ( pNext == rhs.pNext )
20234 && ( semaphore == rhs.semaphore )
20235 && ( handleType == rhs.handleType )
20236 && ( handle == rhs.handle );
20237 }
20238
20239 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20240 {
20241 return !operator==( rhs );
20242 }
20243
20244 private:
20245 StructureType sType;
20246
20247 public:
20248 const void* pNext;
20249 Semaphore semaphore;
20250 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20251 HANDLE handle;
20252 };
20253 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20254#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20255
20256 struct ImportSemaphoreFdInfoKHX
20257 {
20258 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20259 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20260 , pNext( nullptr )
20261 , semaphore( semaphore_ )
20262 , handleType( handleType_ )
20263 , fd( fd_ )
20264 {
20265 }
20266
20267 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20268 {
20269 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20270 }
20271
20272 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20273 {
20274 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20275 return *this;
20276 }
20277
20278 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20279 {
20280 pNext = pNext_;
20281 return *this;
20282 }
20283
20284 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20285 {
20286 semaphore = semaphore_;
20287 return *this;
20288 }
20289
20290 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20291 {
20292 handleType = handleType_;
20293 return *this;
20294 }
20295
20296 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20297 {
20298 fd = fd_;
20299 return *this;
20300 }
20301
20302 operator const VkImportSemaphoreFdInfoKHX&() const
20303 {
20304 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20305 }
20306
20307 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20308 {
20309 return ( sType == rhs.sType )
20310 && ( pNext == rhs.pNext )
20311 && ( semaphore == rhs.semaphore )
20312 && ( handleType == rhs.handleType )
20313 && ( fd == rhs.fd );
20314 }
20315
20316 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20317 {
20318 return !operator==( rhs );
20319 }
20320
20321 private:
20322 StructureType sType;
20323
20324 public:
20325 const void* pNext;
20326 Semaphore semaphore;
20327 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20328 int fd;
20329 };
20330 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20331
20332 enum class ExternalSemaphoreFeatureFlagBitsKHX
20333 {
20334 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20335 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20336 };
20337
20338 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20339
20340 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20341 {
20342 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20343 }
20344
20345 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20346 {
20347 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20348 }
20349
20350 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20351 {
20352 enum
20353 {
20354 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20355 };
20356 };
20357
20358 struct ExternalSemaphorePropertiesKHX
20359 {
20360 operator const VkExternalSemaphorePropertiesKHX&() const
20361 {
20362 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20363 }
20364
20365 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20366 {
20367 return ( sType == rhs.sType )
20368 && ( pNext == rhs.pNext )
20369 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20370 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20371 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20372 }
20373
20374 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20375 {
20376 return !operator==( rhs );
20377 }
20378
20379 private:
20380 StructureType sType;
20381
20382 public:
20383 void* pNext;
20384 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20385 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20386 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20387 };
20388 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20389
Mark Young39389872017-01-19 21:10:49 -070020390 enum class SurfaceCounterFlagBitsEXT
20391 {
20392 eVblankExt = VK_SURFACE_COUNTER_VBLANK_EXT
20393 };
20394
20395 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20396
20397 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20398 {
20399 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20400 }
20401
20402 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20403 {
20404 return ~( SurfaceCounterFlagsEXT( bits ) );
20405 }
20406
20407 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20408 {
20409 enum
20410 {
20411 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblankExt)
20412 };
20413 };
20414
20415 struct SurfaceCapabilities2EXT
20416 {
20417 operator const VkSurfaceCapabilities2EXT&() const
20418 {
20419 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20420 }
20421
20422 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20423 {
20424 return ( sType == rhs.sType )
20425 && ( pNext == rhs.pNext )
20426 && ( minImageCount == rhs.minImageCount )
20427 && ( maxImageCount == rhs.maxImageCount )
20428 && ( currentExtent == rhs.currentExtent )
20429 && ( minImageExtent == rhs.minImageExtent )
20430 && ( maxImageExtent == rhs.maxImageExtent )
20431 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20432 && ( supportedTransforms == rhs.supportedTransforms )
20433 && ( currentTransform == rhs.currentTransform )
20434 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20435 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20436 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20437 }
20438
20439 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20440 {
20441 return !operator==( rhs );
20442 }
20443
20444 private:
20445 StructureType sType;
20446
20447 public:
20448 void* pNext;
20449 uint32_t minImageCount;
20450 uint32_t maxImageCount;
20451 Extent2D currentExtent;
20452 Extent2D minImageExtent;
20453 Extent2D maxImageExtent;
20454 uint32_t maxImageArrayLayers;
20455 SurfaceTransformFlagsKHR supportedTransforms;
20456 SurfaceTransformFlagBitsKHR currentTransform;
20457 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20458 ImageUsageFlags supportedUsageFlags;
20459 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20460 };
20461 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20462
20463 struct SwapchainCounterCreateInfoEXT
20464 {
20465 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20466 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20467 , pNext( nullptr )
20468 , surfaceCounters( surfaceCounters_ )
20469 {
20470 }
20471
20472 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20473 {
20474 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20475 }
20476
20477 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20478 {
20479 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20480 return *this;
20481 }
20482
Mark Young39389872017-01-19 21:10:49 -070020483 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20484 {
20485 pNext = pNext_;
20486 return *this;
20487 }
20488
20489 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20490 {
20491 surfaceCounters = surfaceCounters_;
20492 return *this;
20493 }
20494
20495 operator const VkSwapchainCounterCreateInfoEXT&() const
20496 {
20497 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20498 }
20499
20500 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20501 {
20502 return ( sType == rhs.sType )
20503 && ( pNext == rhs.pNext )
20504 && ( surfaceCounters == rhs.surfaceCounters );
20505 }
20506
20507 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20508 {
20509 return !operator==( rhs );
20510 }
20511
20512 private:
20513 StructureType sType;
20514
20515 public:
20516 const void* pNext;
20517 SurfaceCounterFlagsEXT surfaceCounters;
20518 };
20519 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20520
20521 enum class DisplayPowerStateEXT
20522 {
20523 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20524 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20525 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20526 };
20527
20528 struct DisplayPowerInfoEXT
20529 {
20530 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20531 : sType( StructureType::eDisplayPowerInfoEXT )
20532 , pNext( nullptr )
20533 , powerState( powerState_ )
20534 {
20535 }
20536
20537 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20538 {
20539 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20540 }
20541
20542 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20543 {
20544 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20545 return *this;
20546 }
20547
Mark Young39389872017-01-19 21:10:49 -070020548 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20549 {
20550 pNext = pNext_;
20551 return *this;
20552 }
20553
20554 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20555 {
20556 powerState = powerState_;
20557 return *this;
20558 }
20559
20560 operator const VkDisplayPowerInfoEXT&() const
20561 {
20562 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20563 }
20564
20565 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20566 {
20567 return ( sType == rhs.sType )
20568 && ( pNext == rhs.pNext )
20569 && ( powerState == rhs.powerState );
20570 }
20571
20572 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20573 {
20574 return !operator==( rhs );
20575 }
20576
20577 private:
20578 StructureType sType;
20579
20580 public:
20581 const void* pNext;
20582 DisplayPowerStateEXT powerState;
20583 };
20584 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20585
20586 enum class DeviceEventTypeEXT
20587 {
20588 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20589 };
20590
20591 struct DeviceEventInfoEXT
20592 {
20593 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20594 : sType( StructureType::eDeviceEventInfoEXT )
20595 , pNext( nullptr )
20596 , deviceEvent( deviceEvent_ )
20597 {
20598 }
20599
20600 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20601 {
20602 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20603 }
20604
20605 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20606 {
20607 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20608 return *this;
20609 }
20610
Mark Young39389872017-01-19 21:10:49 -070020611 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20612 {
20613 pNext = pNext_;
20614 return *this;
20615 }
20616
20617 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20618 {
20619 deviceEvent = deviceEvent_;
20620 return *this;
20621 }
20622
20623 operator const VkDeviceEventInfoEXT&() const
20624 {
20625 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20626 }
20627
20628 bool operator==( DeviceEventInfoEXT const& rhs ) const
20629 {
20630 return ( sType == rhs.sType )
20631 && ( pNext == rhs.pNext )
20632 && ( deviceEvent == rhs.deviceEvent );
20633 }
20634
20635 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20636 {
20637 return !operator==( rhs );
20638 }
20639
20640 private:
20641 StructureType sType;
20642
20643 public:
20644 const void* pNext;
20645 DeviceEventTypeEXT deviceEvent;
20646 };
20647 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20648
20649 enum class DisplayEventTypeEXT
20650 {
20651 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20652 };
20653
20654 struct DisplayEventInfoEXT
20655 {
20656 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20657 : sType( StructureType::eDisplayEventInfoEXT )
20658 , pNext( nullptr )
20659 , displayEvent( displayEvent_ )
20660 {
20661 }
20662
20663 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20664 {
20665 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20666 }
20667
20668 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20669 {
20670 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20671 return *this;
20672 }
20673
Mark Young39389872017-01-19 21:10:49 -070020674 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20675 {
20676 pNext = pNext_;
20677 return *this;
20678 }
20679
20680 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20681 {
20682 displayEvent = displayEvent_;
20683 return *this;
20684 }
20685
20686 operator const VkDisplayEventInfoEXT&() const
20687 {
20688 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20689 }
20690
20691 bool operator==( DisplayEventInfoEXT const& rhs ) const
20692 {
20693 return ( sType == rhs.sType )
20694 && ( pNext == rhs.pNext )
20695 && ( displayEvent == rhs.displayEvent );
20696 }
20697
20698 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20699 {
20700 return !operator==( rhs );
20701 }
20702
20703 private:
20704 StructureType sType;
20705
20706 public:
20707 const void* pNext;
20708 DisplayEventTypeEXT displayEvent;
20709 };
20710 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20711
Mark Young0f183a82017-02-28 09:58:04 -070020712 enum class PeerMemoryFeatureFlagBitsKHX
20713 {
20714 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20715 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20716 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20717 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20718 };
20719
20720 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20721
20722 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20723 {
20724 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20725 }
20726
20727 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20728 {
20729 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20730 }
20731
20732 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20733 {
20734 enum
20735 {
20736 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20737 };
20738 };
20739
20740 enum class MemoryAllocateFlagBitsKHX
20741 {
20742 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20743 };
20744
20745 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20746
20747 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20748 {
20749 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20750 }
20751
20752 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20753 {
20754 return ~( MemoryAllocateFlagsKHX( bits ) );
20755 }
20756
20757 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20758 {
20759 enum
20760 {
20761 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20762 };
20763 };
20764
20765 struct MemoryAllocateFlagsInfoKHX
20766 {
20767 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20768 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20769 , pNext( nullptr )
20770 , flags( flags_ )
20771 , deviceMask( deviceMask_ )
20772 {
20773 }
20774
20775 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20776 {
20777 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20778 }
20779
20780 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20781 {
20782 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20783 return *this;
20784 }
20785
20786 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20787 {
20788 pNext = pNext_;
20789 return *this;
20790 }
20791
20792 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20793 {
20794 flags = flags_;
20795 return *this;
20796 }
20797
20798 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20799 {
20800 deviceMask = deviceMask_;
20801 return *this;
20802 }
20803
20804 operator const VkMemoryAllocateFlagsInfoKHX&() const
20805 {
20806 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20807 }
20808
20809 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20810 {
20811 return ( sType == rhs.sType )
20812 && ( pNext == rhs.pNext )
20813 && ( flags == rhs.flags )
20814 && ( deviceMask == rhs.deviceMask );
20815 }
20816
20817 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
20818 {
20819 return !operator==( rhs );
20820 }
20821
20822 private:
20823 StructureType sType;
20824
20825 public:
20826 const void* pNext;
20827 MemoryAllocateFlagsKHX flags;
20828 uint32_t deviceMask;
20829 };
20830 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
20831
20832 enum class DeviceGroupPresentModeFlagBitsKHX
20833 {
20834 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
20835 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
20836 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
20837 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
20838 };
20839
20840 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
20841
20842 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
20843 {
20844 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
20845 }
20846
20847 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
20848 {
20849 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
20850 }
20851
20852 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
20853 {
20854 enum
20855 {
20856 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
20857 };
20858 };
20859
20860 struct DeviceGroupPresentCapabilitiesKHX
20861 {
20862 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
20863 {
20864 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
20865 }
20866
20867 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20868 {
20869 return ( sType == rhs.sType )
20870 && ( pNext == rhs.pNext )
20871 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
20872 && ( modes == rhs.modes );
20873 }
20874
20875 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20876 {
20877 return !operator==( rhs );
20878 }
20879
20880 private:
20881 StructureType sType;
20882
20883 public:
20884 const void* pNext;
20885 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
20886 DeviceGroupPresentModeFlagsKHX modes;
20887 };
20888 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
20889
20890 struct DeviceGroupPresentInfoKHX
20891 {
20892 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
20893 : sType( StructureType::eDeviceGroupPresentInfoKHX )
20894 , pNext( nullptr )
20895 , swapchainCount( swapchainCount_ )
20896 , pDeviceMasks( pDeviceMasks_ )
20897 , mode( mode_ )
20898 {
20899 }
20900
20901 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
20902 {
20903 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20904 }
20905
20906 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
20907 {
20908 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20909 return *this;
20910 }
20911
20912 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
20913 {
20914 pNext = pNext_;
20915 return *this;
20916 }
20917
20918 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
20919 {
20920 swapchainCount = swapchainCount_;
20921 return *this;
20922 }
20923
20924 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
20925 {
20926 pDeviceMasks = pDeviceMasks_;
20927 return *this;
20928 }
20929
20930 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
20931 {
20932 mode = mode_;
20933 return *this;
20934 }
20935
20936 operator const VkDeviceGroupPresentInfoKHX&() const
20937 {
20938 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
20939 }
20940
20941 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
20942 {
20943 return ( sType == rhs.sType )
20944 && ( pNext == rhs.pNext )
20945 && ( swapchainCount == rhs.swapchainCount )
20946 && ( pDeviceMasks == rhs.pDeviceMasks )
20947 && ( mode == rhs.mode );
20948 }
20949
20950 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
20951 {
20952 return !operator==( rhs );
20953 }
20954
20955 private:
20956 StructureType sType;
20957
20958 public:
20959 const void* pNext;
20960 uint32_t swapchainCount;
20961 const uint32_t* pDeviceMasks;
20962 DeviceGroupPresentModeFlagBitsKHX mode;
20963 };
20964 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
20965
20966 struct DeviceGroupSwapchainCreateInfoKHX
20967 {
20968 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
20969 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
20970 , pNext( nullptr )
20971 , modes( modes_ )
20972 {
20973 }
20974
20975 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20976 {
20977 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20978 }
20979
20980 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20981 {
20982 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20983 return *this;
20984 }
20985
20986 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
20987 {
20988 pNext = pNext_;
20989 return *this;
20990 }
20991
20992 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
20993 {
20994 modes = modes_;
20995 return *this;
20996 }
20997
20998 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
20999 {
21000 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
21001 }
21002
21003 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21004 {
21005 return ( sType == rhs.sType )
21006 && ( pNext == rhs.pNext )
21007 && ( modes == rhs.modes );
21008 }
21009
21010 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21011 {
21012 return !operator==( rhs );
21013 }
21014
21015 private:
21016 StructureType sType;
21017
21018 public:
21019 const void* pNext;
21020 DeviceGroupPresentModeFlagsKHX modes;
21021 };
21022 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
21023
21024 enum class SwapchainCreateFlagBitsKHR
21025 {
21026 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
21027 };
21028
21029 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
21030
21031 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
21032 {
21033 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
21034 }
21035
21036 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
21037 {
21038 return ~( SwapchainCreateFlagsKHR( bits ) );
21039 }
21040
21041 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
21042 {
21043 enum
21044 {
21045 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
21046 };
21047 };
21048
21049 struct SwapchainCreateInfoKHR
21050 {
21051 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() )
21052 : sType( StructureType::eSwapchainCreateInfoKHR )
21053 , pNext( nullptr )
21054 , flags( flags_ )
21055 , surface( surface_ )
21056 , minImageCount( minImageCount_ )
21057 , imageFormat( imageFormat_ )
21058 , imageColorSpace( imageColorSpace_ )
21059 , imageExtent( imageExtent_ )
21060 , imageArrayLayers( imageArrayLayers_ )
21061 , imageUsage( imageUsage_ )
21062 , imageSharingMode( imageSharingMode_ )
21063 , queueFamilyIndexCount( queueFamilyIndexCount_ )
21064 , pQueueFamilyIndices( pQueueFamilyIndices_ )
21065 , preTransform( preTransform_ )
21066 , compositeAlpha( compositeAlpha_ )
21067 , presentMode( presentMode_ )
21068 , clipped( clipped_ )
21069 , oldSwapchain( oldSwapchain_ )
21070 {
21071 }
21072
21073 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
21074 {
21075 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
21076 }
21077
21078 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
21079 {
21080 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
21081 return *this;
21082 }
21083
21084 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
21085 {
21086 pNext = pNext_;
21087 return *this;
21088 }
21089
21090 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
21091 {
21092 flags = flags_;
21093 return *this;
21094 }
21095
21096 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
21097 {
21098 surface = surface_;
21099 return *this;
21100 }
21101
21102 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
21103 {
21104 minImageCount = minImageCount_;
21105 return *this;
21106 }
21107
21108 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
21109 {
21110 imageFormat = imageFormat_;
21111 return *this;
21112 }
21113
21114 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
21115 {
21116 imageColorSpace = imageColorSpace_;
21117 return *this;
21118 }
21119
21120 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
21121 {
21122 imageExtent = imageExtent_;
21123 return *this;
21124 }
21125
21126 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
21127 {
21128 imageArrayLayers = imageArrayLayers_;
21129 return *this;
21130 }
21131
21132 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
21133 {
21134 imageUsage = imageUsage_;
21135 return *this;
21136 }
21137
21138 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
21139 {
21140 imageSharingMode = imageSharingMode_;
21141 return *this;
21142 }
21143
21144 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
21145 {
21146 queueFamilyIndexCount = queueFamilyIndexCount_;
21147 return *this;
21148 }
21149
21150 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
21151 {
21152 pQueueFamilyIndices = pQueueFamilyIndices_;
21153 return *this;
21154 }
21155
21156 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
21157 {
21158 preTransform = preTransform_;
21159 return *this;
21160 }
21161
21162 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
21163 {
21164 compositeAlpha = compositeAlpha_;
21165 return *this;
21166 }
21167
21168 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
21169 {
21170 presentMode = presentMode_;
21171 return *this;
21172 }
21173
21174 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
21175 {
21176 clipped = clipped_;
21177 return *this;
21178 }
21179
21180 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
21181 {
21182 oldSwapchain = oldSwapchain_;
21183 return *this;
21184 }
21185
21186 operator const VkSwapchainCreateInfoKHR&() const
21187 {
21188 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
21189 }
21190
21191 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21192 {
21193 return ( sType == rhs.sType )
21194 && ( pNext == rhs.pNext )
21195 && ( flags == rhs.flags )
21196 && ( surface == rhs.surface )
21197 && ( minImageCount == rhs.minImageCount )
21198 && ( imageFormat == rhs.imageFormat )
21199 && ( imageColorSpace == rhs.imageColorSpace )
21200 && ( imageExtent == rhs.imageExtent )
21201 && ( imageArrayLayers == rhs.imageArrayLayers )
21202 && ( imageUsage == rhs.imageUsage )
21203 && ( imageSharingMode == rhs.imageSharingMode )
21204 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21205 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21206 && ( preTransform == rhs.preTransform )
21207 && ( compositeAlpha == rhs.compositeAlpha )
21208 && ( presentMode == rhs.presentMode )
21209 && ( clipped == rhs.clipped )
21210 && ( oldSwapchain == rhs.oldSwapchain );
21211 }
21212
21213 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21214 {
21215 return !operator==( rhs );
21216 }
21217
21218 private:
21219 StructureType sType;
21220
21221 public:
21222 const void* pNext;
21223 SwapchainCreateFlagsKHR flags;
21224 SurfaceKHR surface;
21225 uint32_t minImageCount;
21226 Format imageFormat;
21227 ColorSpaceKHR imageColorSpace;
21228 Extent2D imageExtent;
21229 uint32_t imageArrayLayers;
21230 ImageUsageFlags imageUsage;
21231 SharingMode imageSharingMode;
21232 uint32_t queueFamilyIndexCount;
21233 const uint32_t* pQueueFamilyIndices;
21234 SurfaceTransformFlagBitsKHR preTransform;
21235 CompositeAlphaFlagBitsKHR compositeAlpha;
21236 PresentModeKHR presentMode;
21237 Bool32 clipped;
21238 SwapchainKHR oldSwapchain;
21239 };
21240 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21241
21242 enum class ViewportCoordinateSwizzleNV
21243 {
21244 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21245 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21246 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21247 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21248 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21249 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21250 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21251 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21252 };
21253
21254 struct ViewportSwizzleNV
21255 {
21256 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21257 : x( x_ )
21258 , y( y_ )
21259 , z( z_ )
21260 , w( w_ )
21261 {
21262 }
21263
21264 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21265 {
21266 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21267 }
21268
21269 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21270 {
21271 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21272 return *this;
21273 }
21274
21275 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21276 {
21277 x = x_;
21278 return *this;
21279 }
21280
21281 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21282 {
21283 y = y_;
21284 return *this;
21285 }
21286
21287 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21288 {
21289 z = z_;
21290 return *this;
21291 }
21292
21293 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21294 {
21295 w = w_;
21296 return *this;
21297 }
21298
21299 operator const VkViewportSwizzleNV&() const
21300 {
21301 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21302 }
21303
21304 bool operator==( ViewportSwizzleNV const& rhs ) const
21305 {
21306 return ( x == rhs.x )
21307 && ( y == rhs.y )
21308 && ( z == rhs.z )
21309 && ( w == rhs.w );
21310 }
21311
21312 bool operator!=( ViewportSwizzleNV const& rhs ) const
21313 {
21314 return !operator==( rhs );
21315 }
21316
21317 ViewportCoordinateSwizzleNV x;
21318 ViewportCoordinateSwizzleNV y;
21319 ViewportCoordinateSwizzleNV z;
21320 ViewportCoordinateSwizzleNV w;
21321 };
21322 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21323
21324 struct PipelineViewportSwizzleStateCreateInfoNV
21325 {
21326 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21327 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21328 , pNext( nullptr )
21329 , flags( flags_ )
21330 , viewportCount( viewportCount_ )
21331 , pViewportSwizzles( pViewportSwizzles_ )
21332 {
21333 }
21334
21335 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21336 {
21337 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21338 }
21339
21340 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21341 {
21342 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21343 return *this;
21344 }
21345
21346 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21347 {
21348 pNext = pNext_;
21349 return *this;
21350 }
21351
21352 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21353 {
21354 flags = flags_;
21355 return *this;
21356 }
21357
21358 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21359 {
21360 viewportCount = viewportCount_;
21361 return *this;
21362 }
21363
21364 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21365 {
21366 pViewportSwizzles = pViewportSwizzles_;
21367 return *this;
21368 }
21369
21370 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21371 {
21372 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21373 }
21374
21375 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21376 {
21377 return ( sType == rhs.sType )
21378 && ( pNext == rhs.pNext )
21379 && ( flags == rhs.flags )
21380 && ( viewportCount == rhs.viewportCount )
21381 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21382 }
21383
21384 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21385 {
21386 return !operator==( rhs );
21387 }
21388
21389 private:
21390 StructureType sType;
21391
21392 public:
21393 const void* pNext;
21394 PipelineViewportSwizzleStateCreateFlagsNV flags;
21395 uint32_t viewportCount;
21396 const ViewportSwizzleNV* pViewportSwizzles;
21397 };
21398 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21399
21400 enum class DiscardRectangleModeEXT
21401 {
21402 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21403 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21404 };
21405
21406 struct PipelineDiscardRectangleStateCreateInfoEXT
21407 {
21408 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21409 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21410 , pNext( nullptr )
21411 , flags( flags_ )
21412 , discardRectangleMode( discardRectangleMode_ )
21413 , discardRectangleCount( discardRectangleCount_ )
21414 , pDiscardRectangles( pDiscardRectangles_ )
21415 {
21416 }
21417
21418 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21419 {
21420 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21421 }
21422
21423 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21424 {
21425 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21426 return *this;
21427 }
21428
21429 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21430 {
21431 pNext = pNext_;
21432 return *this;
21433 }
21434
21435 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21436 {
21437 flags = flags_;
21438 return *this;
21439 }
21440
21441 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21442 {
21443 discardRectangleMode = discardRectangleMode_;
21444 return *this;
21445 }
21446
21447 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21448 {
21449 discardRectangleCount = discardRectangleCount_;
21450 return *this;
21451 }
21452
21453 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21454 {
21455 pDiscardRectangles = pDiscardRectangles_;
21456 return *this;
21457 }
21458
21459 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21460 {
21461 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21462 }
21463
21464 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21465 {
21466 return ( sType == rhs.sType )
21467 && ( pNext == rhs.pNext )
21468 && ( flags == rhs.flags )
21469 && ( discardRectangleMode == rhs.discardRectangleMode )
21470 && ( discardRectangleCount == rhs.discardRectangleCount )
21471 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21472 }
21473
21474 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21475 {
21476 return !operator==( rhs );
21477 }
21478
21479 private:
21480 StructureType sType;
21481
21482 public:
21483 const void* pNext;
21484 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21485 DiscardRectangleModeEXT discardRectangleMode;
21486 uint32_t discardRectangleCount;
21487 const Rect2D* pDiscardRectangles;
21488 };
21489 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21490
21491 enum class SubpassDescriptionFlagBits
21492 {
21493 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21494 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21495 };
21496
21497 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21498
21499 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21500 {
21501 return SubpassDescriptionFlags( bit0 ) | bit1;
21502 }
21503
21504 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21505 {
21506 return ~( SubpassDescriptionFlags( bits ) );
21507 }
21508
21509 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21510 {
21511 enum
21512 {
21513 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21514 };
21515 };
21516
21517 struct SubpassDescription
21518 {
21519 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 )
21520 : flags( flags_ )
21521 , pipelineBindPoint( pipelineBindPoint_ )
21522 , inputAttachmentCount( inputAttachmentCount_ )
21523 , pInputAttachments( pInputAttachments_ )
21524 , colorAttachmentCount( colorAttachmentCount_ )
21525 , pColorAttachments( pColorAttachments_ )
21526 , pResolveAttachments( pResolveAttachments_ )
21527 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21528 , preserveAttachmentCount( preserveAttachmentCount_ )
21529 , pPreserveAttachments( pPreserveAttachments_ )
21530 {
21531 }
21532
21533 SubpassDescription( VkSubpassDescription const & rhs )
21534 {
21535 memcpy( this, &rhs, sizeof(SubpassDescription) );
21536 }
21537
21538 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21539 {
21540 memcpy( this, &rhs, sizeof(SubpassDescription) );
21541 return *this;
21542 }
21543
21544 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21545 {
21546 flags = flags_;
21547 return *this;
21548 }
21549
21550 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21551 {
21552 pipelineBindPoint = pipelineBindPoint_;
21553 return *this;
21554 }
21555
21556 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21557 {
21558 inputAttachmentCount = inputAttachmentCount_;
21559 return *this;
21560 }
21561
21562 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21563 {
21564 pInputAttachments = pInputAttachments_;
21565 return *this;
21566 }
21567
21568 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21569 {
21570 colorAttachmentCount = colorAttachmentCount_;
21571 return *this;
21572 }
21573
21574 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21575 {
21576 pColorAttachments = pColorAttachments_;
21577 return *this;
21578 }
21579
21580 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21581 {
21582 pResolveAttachments = pResolveAttachments_;
21583 return *this;
21584 }
21585
21586 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21587 {
21588 pDepthStencilAttachment = pDepthStencilAttachment_;
21589 return *this;
21590 }
21591
21592 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21593 {
21594 preserveAttachmentCount = preserveAttachmentCount_;
21595 return *this;
21596 }
21597
21598 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21599 {
21600 pPreserveAttachments = pPreserveAttachments_;
21601 return *this;
21602 }
21603
21604 operator const VkSubpassDescription&() const
21605 {
21606 return *reinterpret_cast<const VkSubpassDescription*>(this);
21607 }
21608
21609 bool operator==( SubpassDescription const& rhs ) const
21610 {
21611 return ( flags == rhs.flags )
21612 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21613 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21614 && ( pInputAttachments == rhs.pInputAttachments )
21615 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21616 && ( pColorAttachments == rhs.pColorAttachments )
21617 && ( pResolveAttachments == rhs.pResolveAttachments )
21618 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21619 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21620 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21621 }
21622
21623 bool operator!=( SubpassDescription const& rhs ) const
21624 {
21625 return !operator==( rhs );
21626 }
21627
21628 SubpassDescriptionFlags flags;
21629 PipelineBindPoint pipelineBindPoint;
21630 uint32_t inputAttachmentCount;
21631 const AttachmentReference* pInputAttachments;
21632 uint32_t colorAttachmentCount;
21633 const AttachmentReference* pColorAttachments;
21634 const AttachmentReference* pResolveAttachments;
21635 const AttachmentReference* pDepthStencilAttachment;
21636 uint32_t preserveAttachmentCount;
21637 const uint32_t* pPreserveAttachments;
21638 };
21639 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21640
21641 struct RenderPassCreateInfo
21642 {
21643 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 )
21644 : sType( StructureType::eRenderPassCreateInfo )
21645 , pNext( nullptr )
21646 , flags( flags_ )
21647 , attachmentCount( attachmentCount_ )
21648 , pAttachments( pAttachments_ )
21649 , subpassCount( subpassCount_ )
21650 , pSubpasses( pSubpasses_ )
21651 , dependencyCount( dependencyCount_ )
21652 , pDependencies( pDependencies_ )
21653 {
21654 }
21655
21656 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21657 {
21658 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21659 }
21660
21661 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21662 {
21663 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21664 return *this;
21665 }
21666
21667 RenderPassCreateInfo& setPNext( const void* pNext_ )
21668 {
21669 pNext = pNext_;
21670 return *this;
21671 }
21672
21673 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21674 {
21675 flags = flags_;
21676 return *this;
21677 }
21678
21679 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21680 {
21681 attachmentCount = attachmentCount_;
21682 return *this;
21683 }
21684
21685 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21686 {
21687 pAttachments = pAttachments_;
21688 return *this;
21689 }
21690
21691 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21692 {
21693 subpassCount = subpassCount_;
21694 return *this;
21695 }
21696
21697 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21698 {
21699 pSubpasses = pSubpasses_;
21700 return *this;
21701 }
21702
21703 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21704 {
21705 dependencyCount = dependencyCount_;
21706 return *this;
21707 }
21708
21709 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21710 {
21711 pDependencies = pDependencies_;
21712 return *this;
21713 }
21714
21715 operator const VkRenderPassCreateInfo&() const
21716 {
21717 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21718 }
21719
21720 bool operator==( RenderPassCreateInfo const& rhs ) const
21721 {
21722 return ( sType == rhs.sType )
21723 && ( pNext == rhs.pNext )
21724 && ( flags == rhs.flags )
21725 && ( attachmentCount == rhs.attachmentCount )
21726 && ( pAttachments == rhs.pAttachments )
21727 && ( subpassCount == rhs.subpassCount )
21728 && ( pSubpasses == rhs.pSubpasses )
21729 && ( dependencyCount == rhs.dependencyCount )
21730 && ( pDependencies == rhs.pDependencies );
21731 }
21732
21733 bool operator!=( RenderPassCreateInfo const& rhs ) const
21734 {
21735 return !operator==( rhs );
21736 }
21737
21738 private:
21739 StructureType sType;
21740
21741 public:
21742 const void* pNext;
21743 RenderPassCreateFlags flags;
21744 uint32_t attachmentCount;
21745 const AttachmentDescription* pAttachments;
21746 uint32_t subpassCount;
21747 const SubpassDescription* pSubpasses;
21748 uint32_t dependencyCount;
21749 const SubpassDependency* pDependencies;
21750 };
21751 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21752
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021753 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
21754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21755 template <typename Allocator = std::allocator<LayerProperties>>
21756 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
21757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021759 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21760 {
21761 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21762 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021764 template <typename Allocator>
21765 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021766 {
21767 std::vector<LayerProperties,Allocator> properties;
21768 uint32_t propertyCount;
21769 Result result;
21770 do
21771 {
21772 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21773 if ( ( result == Result::eSuccess ) && propertyCount )
21774 {
21775 properties.resize( propertyCount );
21776 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21777 }
21778 } while ( result == Result::eIncomplete );
21779 assert( propertyCount <= properties.size() );
21780 properties.resize( propertyCount );
21781 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21782 }
21783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21784
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021785
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021786 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
21787#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21788 template <typename Allocator = std::allocator<ExtensionProperties>>
21789 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
21790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21791
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021792 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21793 {
21794 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21795 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021797 template <typename Allocator>
21798 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021799 {
21800 std::vector<ExtensionProperties,Allocator> properties;
21801 uint32_t propertyCount;
21802 Result result;
21803 do
21804 {
21805 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21806 if ( ( result == Result::eSuccess ) && propertyCount )
21807 {
21808 properties.resize( propertyCount );
21809 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21810 }
21811 } while ( result == Result::eIncomplete );
21812 assert( propertyCount <= properties.size() );
21813 properties.resize( propertyCount );
21814 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
21815 }
21816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21817
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021818
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021819 // forward declarations
21820 struct CmdProcessCommandsInfoNVX;
21821
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021822 class CommandBuffer
21823 {
21824 public:
21825 CommandBuffer()
21826 : m_commandBuffer(VK_NULL_HANDLE)
21827 {}
21828
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021829 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021830 : m_commandBuffer(VK_NULL_HANDLE)
21831 {}
21832
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021833 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021834 : m_commandBuffer(commandBuffer)
21835 {}
21836
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021837#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021838 CommandBuffer& operator=(VkCommandBuffer commandBuffer)
21839 {
21840 m_commandBuffer = commandBuffer;
21841 return *this;
21842 }
21843#endif
21844
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021845 CommandBuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021846 {
21847 m_commandBuffer = VK_NULL_HANDLE;
21848 return *this;
21849 }
21850
Lenny Komowebf33162016-08-26 14:10:08 -060021851 bool operator==(CommandBuffer const &rhs) const
21852 {
21853 return m_commandBuffer == rhs.m_commandBuffer;
21854 }
21855
21856 bool operator!=(CommandBuffer const &rhs) const
21857 {
21858 return m_commandBuffer != rhs.m_commandBuffer;
21859 }
21860
21861 bool operator<(CommandBuffer const &rhs) const
21862 {
21863 return m_commandBuffer < rhs.m_commandBuffer;
21864 }
21865
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021866 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021867#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021868 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21870
21871#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021872 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021873#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021874 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021875#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21876
21877#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021878 Result reset( CommandBufferResetFlags flags ) const;
21879#else
21880 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021881#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21882
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021883 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021884
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021885 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021886#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021887 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021888#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21889
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021890 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021892 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21894
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021895 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021896
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021897 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
21898
21899 void setBlendConstants( const float blendConstants[4] ) const;
21900
21901 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
21902
21903 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
21904
21905 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
21906
21907 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
21908
21909 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 -060021910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021911 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 -060021912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21913
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021914 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021915
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021916 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021917#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021918 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21920
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021921 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021922
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021923 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
21924
21925 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21926
21927 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21928
Mark Young0f183a82017-02-28 09:58:04 -070021929 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021930
21931 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
21932
21933 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021934#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021935 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021936#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21937
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021938 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021940 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21942
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021943 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 -060021944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021945 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21947
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021948 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021950 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21952
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021953 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021955 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021956#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21957
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021958 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21960 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021961 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021962#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21963
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021964 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021965
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021966 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021968 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21970
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021971 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021973 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21975
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021976 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021978 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21980
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021981 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021982#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021983 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21985
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021986 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021987
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021988 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
21989
21990 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 -060021991#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021992 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 -060021993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21994
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021995 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 -060021996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021997 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 -060021998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21999
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022000 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022001
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022002 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022003
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022004 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022005
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022006 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022007
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022008 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 -060022009
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022010 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22012 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022013 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22015
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022016 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022017#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022018 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22020
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022021 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022022
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022023 void endRenderPass() const;
22024
22025 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022027 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022028#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22029
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022030 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022032 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022035 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022036
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022037 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022039 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22041
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022042 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022043
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022044 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
22045
22046 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022047#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022048 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022049#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22050
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022051 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022052#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022053 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022054#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22055
Mark Young0f183a82017-02-28 09:58:04 -070022056 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
22057#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22058 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
22059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22060
22061 void setDeviceMaskKHX( uint32_t deviceMask ) const;
22062
22063 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
22064
22065 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
22066
22067 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
22068#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22069 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
22070#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22071
22072 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
22073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22074 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
22075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22076
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022077 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022078 {
22079 return m_commandBuffer;
22080 }
22081
22082 explicit operator bool() const
22083 {
22084 return m_commandBuffer != VK_NULL_HANDLE;
22085 }
22086
22087 bool operator!() const
22088 {
22089 return m_commandBuffer == VK_NULL_HANDLE;
22090 }
22091
22092 private:
22093 VkCommandBuffer m_commandBuffer;
22094 };
22095 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
22096
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022097 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
22098 {
22099 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
22100 }
22101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22102 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
22103 {
22104 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
22105 return createResultValue( result, "vk::CommandBuffer::begin" );
22106 }
22107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22108
22109#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22110 VULKAN_HPP_INLINE Result CommandBuffer::end() const
22111 {
22112 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22113 }
22114#else
22115 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
22116 {
22117 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22118 return createResultValue( result, "vk::CommandBuffer::end" );
22119 }
22120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22121
22122#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22123 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
22124 {
22125 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22126 }
22127#else
22128 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
22129 {
22130 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22131 return createResultValue( result, "vk::CommandBuffer::reset" );
22132 }
22133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22134
22135 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
22136 {
22137 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
22138 }
22139
22140 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
22141 {
22142 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
22143 }
22144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22145 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
22146 {
22147 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
22148 }
22149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22150
22151 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
22152 {
22153 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
22154 }
22155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22156 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
22157 {
22158 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
22159 }
22160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22161
22162 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
22163 {
22164 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
22165 }
22166
22167 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
22168 {
22169 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
22170 }
22171
22172 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
22173 {
22174 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
22175 }
22176
22177 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
22178 {
22179 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
22180 }
22181
22182 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
22183 {
22184 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
22185 }
22186
22187 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
22188 {
22189 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
22190 }
22191
22192 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22193 {
22194 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22195 }
22196
22197 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
22198 {
22199 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22200 }
22201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22202 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22203 {
22204 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22205 }
22206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22207
22208 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22209 {
22210 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22211 }
22212
22213 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22214 {
22215 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22216 }
22217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22218 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22219 {
22220#ifdef VULKAN_HPP_NO_EXCEPTIONS
22221 assert( buffers.size() == offsets.size() );
22222#else
22223 if ( buffers.size() != offsets.size() )
22224 {
22225 throw std::logic_error( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
22226 }
22227#endif // VULKAN_HPP_NO_EXCEPTIONS
22228 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22229 }
22230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22231
22232 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22233 {
22234 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22235 }
22236
22237 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22238 {
22239 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22240 }
22241
22242 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22243 {
22244 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22245 }
22246
22247 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22248 {
22249 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22250 }
22251
Mark Young0f183a82017-02-28 09:58:04 -070022252 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022253 {
Mark Young0f183a82017-02-28 09:58:04 -070022254 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022255 }
22256
22257 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22258 {
22259 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22260 }
22261
22262 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22263 {
22264 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22265 }
22266#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22267 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22268 {
22269 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22270 }
22271#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22272
22273 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22274 {
22275 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 ) );
22276 }
22277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22278 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22279 {
22280 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() ) );
22281 }
22282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22283
22284 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22285 {
22286 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 ) );
22287 }
22288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22289 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22290 {
22291 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 ) );
22292 }
22293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22294
22295 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22296 {
22297 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22298 }
22299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22300 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22301 {
22302 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22303 }
22304#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22305
22306 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22307 {
22308 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22309 }
22310#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22311 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22312 {
22313 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22314 }
22315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22316
22317 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22318 {
22319 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22320 }
22321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22322 template <typename T>
22323 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22324 {
22325 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22326 }
22327#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22328
22329 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22330 {
22331 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22332 }
22333
22334 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22335 {
22336 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22337 }
22338#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22339 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22340 {
22341 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22342 }
22343#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22344
22345 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22346 {
22347 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22348 }
22349#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22350 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22351 {
22352 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22353 }
22354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22355
22356 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22357 {
22358 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22359 }
22360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22361 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22362 {
22363 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22364 }
22365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22366
22367 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22368 {
22369 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 ) );
22370 }
22371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22372 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22373 {
22374 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() ) );
22375 }
22376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22377
22378 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22379 {
22380 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22381 }
22382
22383 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22384 {
22385 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22386 }
22387
22388 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
22389 {
22390 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 ) );
22391 }
22392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22393 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
22394 {
22395 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() ) );
22396 }
22397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22398
22399 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
22400 {
22401 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 ) );
22402 }
22403#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22404 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
22405 {
22406 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() ) );
22407 }
22408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22409
22410 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22411 {
22412 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22413 }
22414
22415 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22416 {
22417 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22418 }
22419
22420 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22421 {
22422 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22423 }
22424
22425 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22426 {
22427 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22428 }
22429
22430 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22431 {
22432 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22433 }
22434
22435 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22436 {
22437 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22438 }
22439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22440 template <typename T>
22441 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22442 {
22443 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22444 }
22445#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22446
22447 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22448 {
22449 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22450 }
22451#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22452 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22453 {
22454 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22455 }
22456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22457
22458 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22459 {
22460 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22461 }
22462
22463 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22464 {
22465 vkCmdEndRenderPass( m_commandBuffer );
22466 }
22467
22468 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22469 {
22470 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22471 }
22472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22473 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22474 {
22475 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22476 }
22477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22478
22479 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22480 {
22481 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22482 }
22483#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22484 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22485 {
22486 DebugMarkerMarkerInfoEXT markerInfo;
22487 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22488 return markerInfo;
22489 }
22490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22491
22492 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22493 {
22494 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22495 }
22496
22497 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22498 {
22499 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22500 }
22501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22502 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22503 {
22504 DebugMarkerMarkerInfoEXT markerInfo;
22505 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22506 return markerInfo;
22507 }
22508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22509
22510 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22511 {
22512 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22513 }
22514
22515 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22516 {
22517 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22518 }
22519
22520 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22521 {
22522 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22523 }
22524#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22525 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22526 {
22527 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22528 }
22529#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22530
22531 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22532 {
22533 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22534 }
22535#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22536 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22537 {
22538 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22539 }
22540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022541
22542 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22543 {
22544 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22545 }
22546#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22547 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22548 {
22549 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22550 }
22551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22552
22553 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22554 {
22555 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22556 }
22557
22558 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
22559 {
22560 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22561 }
22562
22563 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22564 {
22565 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22566 }
22567
22568 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22569 {
22570 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22571 }
22572#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22573 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22574 {
22575 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22576 }
22577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22578
22579 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22580 {
22581 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22582 }
22583#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22584 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22585 {
22586 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22587 }
22588#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022589
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022590 struct SubmitInfo
22591 {
22592 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 )
22593 : sType( StructureType::eSubmitInfo )
22594 , pNext( nullptr )
22595 , waitSemaphoreCount( waitSemaphoreCount_ )
22596 , pWaitSemaphores( pWaitSemaphores_ )
22597 , pWaitDstStageMask( pWaitDstStageMask_ )
22598 , commandBufferCount( commandBufferCount_ )
22599 , pCommandBuffers( pCommandBuffers_ )
22600 , signalSemaphoreCount( signalSemaphoreCount_ )
22601 , pSignalSemaphores( pSignalSemaphores_ )
22602 {
22603 }
22604
22605 SubmitInfo( VkSubmitInfo const & rhs )
22606 {
22607 memcpy( this, &rhs, sizeof(SubmitInfo) );
22608 }
22609
22610 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22611 {
22612 memcpy( this, &rhs, sizeof(SubmitInfo) );
22613 return *this;
22614 }
22615
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022616 SubmitInfo& setPNext( const void* pNext_ )
22617 {
22618 pNext = pNext_;
22619 return *this;
22620 }
22621
22622 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22623 {
22624 waitSemaphoreCount = waitSemaphoreCount_;
22625 return *this;
22626 }
22627
22628 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22629 {
22630 pWaitSemaphores = pWaitSemaphores_;
22631 return *this;
22632 }
22633
22634 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22635 {
22636 pWaitDstStageMask = pWaitDstStageMask_;
22637 return *this;
22638 }
22639
22640 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22641 {
22642 commandBufferCount = commandBufferCount_;
22643 return *this;
22644 }
22645
22646 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22647 {
22648 pCommandBuffers = pCommandBuffers_;
22649 return *this;
22650 }
22651
22652 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22653 {
22654 signalSemaphoreCount = signalSemaphoreCount_;
22655 return *this;
22656 }
22657
22658 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22659 {
22660 pSignalSemaphores = pSignalSemaphores_;
22661 return *this;
22662 }
22663
22664 operator const VkSubmitInfo&() const
22665 {
22666 return *reinterpret_cast<const VkSubmitInfo*>(this);
22667 }
22668
22669 bool operator==( SubmitInfo const& rhs ) const
22670 {
22671 return ( sType == rhs.sType )
22672 && ( pNext == rhs.pNext )
22673 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22674 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22675 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22676 && ( commandBufferCount == rhs.commandBufferCount )
22677 && ( pCommandBuffers == rhs.pCommandBuffers )
22678 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22679 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22680 }
22681
22682 bool operator!=( SubmitInfo const& rhs ) const
22683 {
22684 return !operator==( rhs );
22685 }
22686
22687 private:
22688 StructureType sType;
22689
22690 public:
22691 const void* pNext;
22692 uint32_t waitSemaphoreCount;
22693 const Semaphore* pWaitSemaphores;
22694 const PipelineStageFlags* pWaitDstStageMask;
22695 uint32_t commandBufferCount;
22696 const CommandBuffer* pCommandBuffers;
22697 uint32_t signalSemaphoreCount;
22698 const Semaphore* pSignalSemaphores;
22699 };
22700 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22701
22702 class Queue
22703 {
22704 public:
22705 Queue()
22706 : m_queue(VK_NULL_HANDLE)
22707 {}
22708
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022709 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022710 : m_queue(VK_NULL_HANDLE)
22711 {}
22712
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022713 VULKAN_HPP_TYPESAFE_EXPLICIT Queue(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022714 : m_queue(queue)
22715 {}
22716
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022717#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022718 Queue& operator=(VkQueue queue)
22719 {
22720 m_queue = queue;
22721 return *this;
22722 }
22723#endif
22724
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022725 Queue& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022726 {
22727 m_queue = VK_NULL_HANDLE;
22728 return *this;
22729 }
22730
Lenny Komowebf33162016-08-26 14:10:08 -060022731 bool operator==(Queue const &rhs) const
22732 {
22733 return m_queue == rhs.m_queue;
22734 }
22735
22736 bool operator!=(Queue const &rhs) const
22737 {
22738 return m_queue != rhs.m_queue;
22739 }
22740
22741 bool operator<(Queue const &rhs) const
22742 {
22743 return m_queue < rhs.m_queue;
22744 }
22745
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022746 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022748 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22750
22751#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022752 Result waitIdle() const;
22753#else
22754 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22756
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022757 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022759 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22761
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022762 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022764 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22766
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022767 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022768 {
22769 return m_queue;
22770 }
22771
22772 explicit operator bool() const
22773 {
22774 return m_queue != VK_NULL_HANDLE;
22775 }
22776
22777 bool operator!() const
22778 {
22779 return m_queue == VK_NULL_HANDLE;
22780 }
22781
22782 private:
22783 VkQueue m_queue;
22784 };
22785 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22786
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022787 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22788 {
22789 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22790 }
22791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22792 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22793 {
22794 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22795 return createResultValue( result, "vk::Queue::submit" );
22796 }
22797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22798
22799#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22800 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22801 {
22802 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22803 }
22804#else
22805 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22806 {
22807 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22808 return createResultValue( result, "vk::Queue::waitIdle" );
22809 }
22810#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22811
22812 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
22813 {
22814 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
22815 }
22816#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22817 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
22818 {
22819 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
22820 return createResultValue( result, "vk::Queue::bindSparse" );
22821 }
22822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22823
22824 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
22825 {
22826 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
22827 }
22828#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22829 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
22830 {
22831 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
22832 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
22833 }
22834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022835
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022836#ifndef VULKAN_HPP_NO_SMART_HANDLE
22837 class BufferDeleter;
22838 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
22839 class BufferViewDeleter;
22840 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
22841 class CommandBufferDeleter;
22842 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
22843 class CommandPoolDeleter;
22844 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
22845 class DescriptorPoolDeleter;
22846 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
22847 class DescriptorSetDeleter;
22848 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
22849 class DescriptorSetLayoutDeleter;
22850 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070022851 class DescriptorUpdateTemplateKHRDeleter;
22852 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022853 class DeviceMemoryDeleter;
22854 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
22855 class EventDeleter;
22856 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
22857 class FenceDeleter;
22858 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
22859 class FramebufferDeleter;
22860 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
22861 class ImageDeleter;
22862 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
22863 class ImageViewDeleter;
22864 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
22865 class IndirectCommandsLayoutNVXDeleter;
22866 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
22867 class ObjectTableNVXDeleter;
22868 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
22869 class PipelineDeleter;
22870 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
22871 class PipelineCacheDeleter;
22872 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
22873 class PipelineLayoutDeleter;
22874 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
22875 class QueryPoolDeleter;
22876 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
22877 class RenderPassDeleter;
22878 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
22879 class SamplerDeleter;
22880 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
22881 class SemaphoreDeleter;
22882 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
22883 class ShaderModuleDeleter;
22884 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
22885 class SwapchainKHRDeleter;
22886 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
22887#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22888
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022889 class Device
22890 {
22891 public:
22892 Device()
22893 : m_device(VK_NULL_HANDLE)
22894 {}
22895
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022896 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022897 : m_device(VK_NULL_HANDLE)
22898 {}
22899
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022900 VULKAN_HPP_TYPESAFE_EXPLICIT Device(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022901 : m_device(device)
22902 {}
22903
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022904#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022905 Device& operator=(VkDevice device)
22906 {
22907 m_device = device;
22908 return *this;
22909 }
22910#endif
22911
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022912 Device& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022913 {
22914 m_device = VK_NULL_HANDLE;
22915 return *this;
22916 }
22917
Lenny Komowebf33162016-08-26 14:10:08 -060022918 bool operator==(Device const &rhs) const
22919 {
22920 return m_device == rhs.m_device;
22921 }
22922
22923 bool operator!=(Device const &rhs) const
22924 {
22925 return m_device != rhs.m_device;
22926 }
22927
22928 bool operator<(Device const &rhs) const
22929 {
22930 return m_device < rhs.m_device;
22931 }
22932
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022933 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022934#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022935 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022936#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22937
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022938 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022940 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22942
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022943 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022945 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022946#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22947
22948#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022949 Result waitIdle() const;
22950#else
22951 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22953
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022954 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022956 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22957#ifndef VULKAN_HPP_NO_SMART_HANDLE
22958 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22959#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22961
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022962 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022964 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22966
22967 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
22968#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22969 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
22970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22971
22972 void unmapMemory( DeviceMemory memory ) const;
22973
22974 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22976 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22978
22979 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22981 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22983
22984 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
22985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22986 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
22987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22988
22989 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
22990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22991 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22993
22994#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022995 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22996#else
22997 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022999
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023000 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023002 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23004
23005#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023006 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
23007#else
23008 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23010
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023011 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023013 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
23014 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23016
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023017 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023019 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23020#ifndef VULKAN_HPP_NO_SMART_HANDLE
23021 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23022#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23024
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023025 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023027 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023028#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23029
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023030 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023032 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023035 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023036
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023037 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023039 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
23040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23041
23042 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
23043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23044 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23045#ifndef VULKAN_HPP_NO_SMART_HANDLE
23046 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23047#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23049
23050 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
23051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23052 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23054
23055 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
23056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23057 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23058#ifndef VULKAN_HPP_NO_SMART_HANDLE
23059 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23060#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23062
23063 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
23064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23065 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23067
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023068 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023069
23070#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023071 Result setEvent( Event event ) const;
23072#else
23073 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23075
23076#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023077 Result resetEvent( Event event ) const;
23078#else
23079 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23081
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023082 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023083#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023084 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23085#ifndef VULKAN_HPP_NO_SMART_HANDLE
23086 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23087#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23089
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023090 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023092 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23094
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023095 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 -060023096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23097 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023098 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 -060023099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23100
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023101 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023103 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23104#ifndef VULKAN_HPP_NO_SMART_HANDLE
23105 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23106#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23108
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023109 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023110#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023111 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23113
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023114 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023116 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23117#ifndef VULKAN_HPP_NO_SMART_HANDLE
23118 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23119#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23121
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023122 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023124 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23126
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023127 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023129 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23130#ifndef VULKAN_HPP_NO_SMART_HANDLE
23131 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23132#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23134
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023135 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023137 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23139
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023140 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023142 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23144
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023145 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023147 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23148#ifndef VULKAN_HPP_NO_SMART_HANDLE
23149 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23150#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23152
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023153 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023155 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23157
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023158 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023160 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23161#ifndef VULKAN_HPP_NO_SMART_HANDLE
23162 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23163#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23165
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023166 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023168 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23170
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023171 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023173 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23174#ifndef VULKAN_HPP_NO_SMART_HANDLE
23175 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23176#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023177#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23178
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023179 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023180#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023181 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23183
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023184 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023185#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023186 template <typename Allocator = std::allocator<uint8_t>>
23187 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23189
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023190 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023192 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23194
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023195 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023197 template <typename Allocator = std::allocator<Pipeline>>
23198 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23199 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23200#ifndef VULKAN_HPP_NO_SMART_HANDLE
23201 template <typename Allocator = std::allocator<Pipeline>>
23202 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23203 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23204#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023205#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23206
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023207 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023209 template <typename Allocator = std::allocator<Pipeline>>
23210 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23211 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23212#ifndef VULKAN_HPP_NO_SMART_HANDLE
23213 template <typename Allocator = std::allocator<Pipeline>>
23214 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23215 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23216#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23218
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023219 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023221 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23223
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023224 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023226 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23227#ifndef VULKAN_HPP_NO_SMART_HANDLE
23228 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23229#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23231
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023232 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023234 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23236
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023237 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023239 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23240#ifndef VULKAN_HPP_NO_SMART_HANDLE
23241 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23242#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23244
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023245 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023246#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023247 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23249
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023250 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023252 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23253#ifndef VULKAN_HPP_NO_SMART_HANDLE
23254 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23255#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23257
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023258 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023260 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23262
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023263 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023264#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023265 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23266#ifndef VULKAN_HPP_NO_SMART_HANDLE
23267 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23268#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23270
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023271 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023273 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23275
23276#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023277 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23278#else
23279 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23281
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023282 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023284 template <typename Allocator = std::allocator<DescriptorSet>>
23285 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23286#ifndef VULKAN_HPP_NO_SMART_HANDLE
23287 template <typename Allocator = std::allocator<DescriptorSet>>
23288 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23289#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023290#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23291
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023292 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023294 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23296
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023297 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023299 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23301
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023302 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023304 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23305#ifndef VULKAN_HPP_NO_SMART_HANDLE
23306 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23307#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23309
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023310 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023312 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23314
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023315 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023317 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23318#ifndef VULKAN_HPP_NO_SMART_HANDLE
23319 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23320#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023321#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23322
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023323 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023325 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23327
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023328 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023330 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23332
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023333 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023335 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23336#ifndef VULKAN_HPP_NO_SMART_HANDLE
23337 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23338#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23340
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023341 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023343 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023344#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23345
23346#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023347 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23348#else
23349 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023350#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23351
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023352 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023354 template <typename Allocator = std::allocator<CommandBuffer>>
23355 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23356#ifndef VULKAN_HPP_NO_SMART_HANDLE
23357 template <typename Allocator = std::allocator<CommandBuffer>>
23358 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23359#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23361
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023362 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023364 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23366
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023367 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023369 template <typename Allocator = std::allocator<SwapchainKHR>>
23370 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23371 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23372#ifndef VULKAN_HPP_NO_SMART_HANDLE
23373 template <typename Allocator = std::allocator<SwapchainKHR>>
23374 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23375 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23376#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23378
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023379 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023381 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23382#ifndef VULKAN_HPP_NO_SMART_HANDLE
23383 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23384#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23386
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023387 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023389 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23391
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023392 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023394 template <typename Allocator = std::allocator<Image>>
23395 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) 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 acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023399#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023400 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023401#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23402
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023403 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023404#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023405 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23407
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023408 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023410 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023411#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23412
Lenny Komow6501c122016-08-31 15:03:49 -060023413#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023414 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23415#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23416 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023418#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23419
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023420 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023422 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23423#ifndef VULKAN_HPP_NO_SMART_HANDLE
23424 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23425#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023426#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23427
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023428 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023429#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023430 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023431#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23432
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023433 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023435 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23436#ifndef VULKAN_HPP_NO_SMART_HANDLE
23437 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23438#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023439#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23440
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023441 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023443 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023444#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23445
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023446 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023447#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023448 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023449#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23450
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023451 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023452#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023453 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23455
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023456#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023457 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023458#else
23459 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023461
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023462#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023463 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23465 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023467#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023468
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023469#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023470 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23472 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023474#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023475
23476 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23478 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23479#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23480
23481 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23483 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23485
23486#ifdef VK_USE_PLATFORM_WIN32_KHX
23487 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23489 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23491#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23492
23493#ifdef VK_USE_PLATFORM_WIN32_KHX
23494 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23496 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23498#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23499
23500 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23502 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23503#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23504
23505 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23506#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23507 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23509
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023510 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023511#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023512 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023513#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23514
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023515 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023516#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023517 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023518#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23519
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023520 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023521#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023522 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023523#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23524
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023525 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023526#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023527 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23529
Mark Young0f183a82017-02-28 09:58:04 -070023530 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23531#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23532 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23534
23535 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23537 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23539
23540 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23541#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23542 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23543#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23544
23545 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23546#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23547 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23548#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23549
23550 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23551#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23552 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23553#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23554
23555 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23556#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23557 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23558#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23559
23560 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23561#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23562 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23563#ifndef VULKAN_HPP_NO_SMART_HANDLE
23564 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23565#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23566#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23567
23568 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23570 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23571#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23572
23573 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23574
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023575 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23577 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23578#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23579
23580 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23582 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23584
23585 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23587 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23588 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23589#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23590
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023591 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023592 {
23593 return m_device;
23594 }
23595
23596 explicit operator bool() const
23597 {
23598 return m_device != VK_NULL_HANDLE;
23599 }
23600
23601 bool operator!() const
23602 {
23603 return m_device == VK_NULL_HANDLE;
23604 }
23605
23606 private:
23607 VkDevice m_device;
23608 };
23609 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23610
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023611#ifndef VULKAN_HPP_NO_SMART_HANDLE
23612 class BufferDeleter
23613 {
23614 public:
23615 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23616 : m_device( device )
23617 , m_allocator( allocator )
23618 {}
23619
23620 void operator()( Buffer buffer )
23621 {
23622 m_device.destroyBuffer( buffer, m_allocator );
23623 }
23624
23625 private:
23626 Device m_device;
23627 Optional<const AllocationCallbacks> m_allocator;
23628 };
23629
23630 class BufferViewDeleter
23631 {
23632 public:
23633 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23634 : m_device( device )
23635 , m_allocator( allocator )
23636 {}
23637
23638 void operator()( BufferView bufferView )
23639 {
23640 m_device.destroyBufferView( bufferView, m_allocator );
23641 }
23642
23643 private:
23644 Device m_device;
23645 Optional<const AllocationCallbacks> m_allocator;
23646 };
23647
23648 class CommandBufferDeleter
23649 {
23650 public:
23651 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23652 : m_device( device )
23653 , m_commandPool( commandPool )
23654 {}
23655
23656 void operator()( CommandBuffer commandBuffer )
23657 {
23658 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23659 }
23660
23661 private:
23662 Device m_device;
23663 CommandPool m_commandPool;
23664 };
23665
23666 class CommandPoolDeleter
23667 {
23668 public:
23669 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23670 : m_device( device )
23671 , m_allocator( allocator )
23672 {}
23673
23674 void operator()( CommandPool commandPool )
23675 {
23676 m_device.destroyCommandPool( commandPool, m_allocator );
23677 }
23678
23679 private:
23680 Device m_device;
23681 Optional<const AllocationCallbacks> m_allocator;
23682 };
23683
23684 class DescriptorPoolDeleter
23685 {
23686 public:
23687 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23688 : m_device( device )
23689 , m_allocator( allocator )
23690 {}
23691
23692 void operator()( DescriptorPool descriptorPool )
23693 {
23694 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23695 }
23696
23697 private:
23698 Device m_device;
23699 Optional<const AllocationCallbacks> m_allocator;
23700 };
23701
23702 class DescriptorSetDeleter
23703 {
23704 public:
23705 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23706 : m_device( device )
23707 , m_descriptorPool( descriptorPool )
23708 {}
23709
23710 void operator()( DescriptorSet descriptorSet )
23711 {
23712 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23713 }
23714
23715 private:
23716 Device m_device;
23717 DescriptorPool m_descriptorPool;
23718 };
23719
23720 class DescriptorSetLayoutDeleter
23721 {
23722 public:
23723 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23724 : m_device( device )
23725 , m_allocator( allocator )
23726 {}
23727
23728 void operator()( DescriptorSetLayout descriptorSetLayout )
23729 {
23730 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23731 }
23732
23733 private:
23734 Device m_device;
23735 Optional<const AllocationCallbacks> m_allocator;
23736 };
23737
Mark Young0f183a82017-02-28 09:58:04 -070023738 class DescriptorUpdateTemplateKHRDeleter
23739 {
23740 public:
23741 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23742 : m_device( device )
23743 , m_allocator( allocator )
23744 {}
23745
23746 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23747 {
23748 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23749 }
23750
23751 private:
23752 Device m_device;
23753 Optional<const AllocationCallbacks> m_allocator;
23754 };
23755
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023756 class DeviceMemoryDeleter
23757 {
23758 public:
23759 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23760 : m_device( device )
23761 , m_allocator( allocator )
23762 {}
23763
23764 void operator()( DeviceMemory deviceMemory )
23765 {
23766 m_device.freeMemory( deviceMemory, m_allocator );
23767 }
23768
23769 private:
23770 Device m_device;
23771 Optional<const AllocationCallbacks> m_allocator;
23772 };
23773
23774 class EventDeleter
23775 {
23776 public:
23777 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23778 : m_device( device )
23779 , m_allocator( allocator )
23780 {}
23781
23782 void operator()( Event event )
23783 {
23784 m_device.destroyEvent( event, m_allocator );
23785 }
23786
23787 private:
23788 Device m_device;
23789 Optional<const AllocationCallbacks> m_allocator;
23790 };
23791
23792 class FenceDeleter
23793 {
23794 public:
23795 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23796 : m_device( device )
23797 , m_allocator( allocator )
23798 {}
23799
23800 void operator()( Fence fence )
23801 {
23802 m_device.destroyFence( fence, m_allocator );
23803 }
23804
23805 private:
23806 Device m_device;
23807 Optional<const AllocationCallbacks> m_allocator;
23808 };
23809
23810 class FramebufferDeleter
23811 {
23812 public:
23813 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23814 : m_device( device )
23815 , m_allocator( allocator )
23816 {}
23817
23818 void operator()( Framebuffer framebuffer )
23819 {
23820 m_device.destroyFramebuffer( framebuffer, m_allocator );
23821 }
23822
23823 private:
23824 Device m_device;
23825 Optional<const AllocationCallbacks> m_allocator;
23826 };
23827
23828 class ImageDeleter
23829 {
23830 public:
23831 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23832 : m_device( device )
23833 , m_allocator( allocator )
23834 {}
23835
23836 void operator()( Image image )
23837 {
23838 m_device.destroyImage( image, m_allocator );
23839 }
23840
23841 private:
23842 Device m_device;
23843 Optional<const AllocationCallbacks> m_allocator;
23844 };
23845
23846 class ImageViewDeleter
23847 {
23848 public:
23849 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23850 : m_device( device )
23851 , m_allocator( allocator )
23852 {}
23853
23854 void operator()( ImageView imageView )
23855 {
23856 m_device.destroyImageView( imageView, m_allocator );
23857 }
23858
23859 private:
23860 Device m_device;
23861 Optional<const AllocationCallbacks> m_allocator;
23862 };
23863
23864 class IndirectCommandsLayoutNVXDeleter
23865 {
23866 public:
23867 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23868 : m_device( device )
23869 , m_allocator( allocator )
23870 {}
23871
23872 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
23873 {
23874 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
23875 }
23876
23877 private:
23878 Device m_device;
23879 Optional<const AllocationCallbacks> m_allocator;
23880 };
23881
23882 class ObjectTableNVXDeleter
23883 {
23884 public:
23885 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23886 : m_device( device )
23887 , m_allocator( allocator )
23888 {}
23889
23890 void operator()( ObjectTableNVX objectTableNVX )
23891 {
23892 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
23893 }
23894
23895 private:
23896 Device m_device;
23897 Optional<const AllocationCallbacks> m_allocator;
23898 };
23899
23900 class PipelineDeleter
23901 {
23902 public:
23903 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23904 : m_device( device )
23905 , m_allocator( allocator )
23906 {}
23907
23908 void operator()( Pipeline pipeline )
23909 {
23910 m_device.destroyPipeline( pipeline, m_allocator );
23911 }
23912
23913 private:
23914 Device m_device;
23915 Optional<const AllocationCallbacks> m_allocator;
23916 };
23917
23918 class PipelineCacheDeleter
23919 {
23920 public:
23921 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23922 : m_device( device )
23923 , m_allocator( allocator )
23924 {}
23925
23926 void operator()( PipelineCache pipelineCache )
23927 {
23928 m_device.destroyPipelineCache( pipelineCache, m_allocator );
23929 }
23930
23931 private:
23932 Device m_device;
23933 Optional<const AllocationCallbacks> m_allocator;
23934 };
23935
23936 class PipelineLayoutDeleter
23937 {
23938 public:
23939 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23940 : m_device( device )
23941 , m_allocator( allocator )
23942 {}
23943
23944 void operator()( PipelineLayout pipelineLayout )
23945 {
23946 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
23947 }
23948
23949 private:
23950 Device m_device;
23951 Optional<const AllocationCallbacks> m_allocator;
23952 };
23953
23954 class QueryPoolDeleter
23955 {
23956 public:
23957 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23958 : m_device( device )
23959 , m_allocator( allocator )
23960 {}
23961
23962 void operator()( QueryPool queryPool )
23963 {
23964 m_device.destroyQueryPool( queryPool, m_allocator );
23965 }
23966
23967 private:
23968 Device m_device;
23969 Optional<const AllocationCallbacks> m_allocator;
23970 };
23971
23972 class RenderPassDeleter
23973 {
23974 public:
23975 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23976 : m_device( device )
23977 , m_allocator( allocator )
23978 {}
23979
23980 void operator()( RenderPass renderPass )
23981 {
23982 m_device.destroyRenderPass( renderPass, m_allocator );
23983 }
23984
23985 private:
23986 Device m_device;
23987 Optional<const AllocationCallbacks> m_allocator;
23988 };
23989
23990 class SamplerDeleter
23991 {
23992 public:
23993 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23994 : m_device( device )
23995 , m_allocator( allocator )
23996 {}
23997
23998 void operator()( Sampler sampler )
23999 {
24000 m_device.destroySampler( sampler, m_allocator );
24001 }
24002
24003 private:
24004 Device m_device;
24005 Optional<const AllocationCallbacks> m_allocator;
24006 };
24007
24008 class SemaphoreDeleter
24009 {
24010 public:
24011 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24012 : m_device( device )
24013 , m_allocator( allocator )
24014 {}
24015
24016 void operator()( Semaphore semaphore )
24017 {
24018 m_device.destroySemaphore( semaphore, m_allocator );
24019 }
24020
24021 private:
24022 Device m_device;
24023 Optional<const AllocationCallbacks> m_allocator;
24024 };
24025
24026 class ShaderModuleDeleter
24027 {
24028 public:
24029 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24030 : m_device( device )
24031 , m_allocator( allocator )
24032 {}
24033
24034 void operator()( ShaderModule shaderModule )
24035 {
24036 m_device.destroyShaderModule( shaderModule, m_allocator );
24037 }
24038
24039 private:
24040 Device m_device;
24041 Optional<const AllocationCallbacks> m_allocator;
24042 };
24043
24044 class SwapchainKHRDeleter
24045 {
24046 public:
24047 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24048 : m_device( device )
24049 , m_allocator( allocator )
24050 {}
24051
24052 void operator()( SwapchainKHR swapchainKHR )
24053 {
24054 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
24055 }
24056
24057 private:
24058 Device m_device;
24059 Optional<const AllocationCallbacks> m_allocator;
24060 };
24061#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24062
24063 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
24064 {
24065 return vkGetDeviceProcAddr( m_device, pName );
24066 }
24067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24068 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
24069 {
24070 return vkGetDeviceProcAddr( m_device, name.c_str() );
24071 }
24072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24073
24074 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
24075 {
24076 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24077 }
24078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24079 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
24080 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024081 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024082 }
24083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24084
24085 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
24086 {
24087 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
24088 }
24089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24090 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
24091 {
24092 Queue queue;
24093 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
24094 return queue;
24095 }
24096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24097
24098#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24099 VULKAN_HPP_INLINE Result Device::waitIdle() const
24100 {
24101 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24102 }
24103#else
24104 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
24105 {
24106 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24107 return createResultValue( result, "vk::Device::waitIdle" );
24108 }
24109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24110
24111 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
24112 {
24113 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
24114 }
24115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24116 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24117 {
24118 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024119 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 -070024120 return createResultValue( result, memory, "vk::Device::allocateMemory" );
24121 }
24122#ifndef VULKAN_HPP_NO_SMART_HANDLE
24123 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24124 {
24125 DeviceMemoryDeleter deleter( *this, allocator );
24126 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
24127 }
24128#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24130
24131 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
24132 {
24133 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24134 }
24135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24136 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
24137 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024138 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024139 }
24140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24141
24142 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
24143 {
24144 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
24145 }
24146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24147 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
24148 {
24149 void* pData;
24150 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
24151 return createResultValue( result, pData, "vk::Device::mapMemory" );
24152 }
24153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24154
24155 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
24156 {
24157 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
24158 }
24159
24160 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24161 {
24162 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24163 }
24164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24165 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24166 {
24167 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24168 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
24169 }
24170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24171
24172 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24173 {
24174 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24175 }
24176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24177 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24178 {
24179 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24180 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
24181 }
24182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24183
24184 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
24185 {
24186 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
24187 }
24188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24189 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
24190 {
24191 DeviceSize committedMemoryInBytes;
24192 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24193 return committedMemoryInBytes;
24194 }
24195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24196
24197 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24198 {
24199 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24200 }
24201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24202 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24203 {
24204 MemoryRequirements memoryRequirements;
24205 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24206 return memoryRequirements;
24207 }
24208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24209
24210#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24211 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24212 {
24213 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24214 }
24215#else
24216 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24217 {
24218 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24219 return createResultValue( result, "vk::Device::bindBufferMemory" );
24220 }
24221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24222
24223 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24224 {
24225 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24226 }
24227#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24228 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24229 {
24230 MemoryRequirements memoryRequirements;
24231 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24232 return memoryRequirements;
24233 }
24234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24235
24236#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24237 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24238 {
24239 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24240 }
24241#else
24242 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24243 {
24244 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24245 return createResultValue( result, "vk::Device::bindImageMemory" );
24246 }
24247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24248
24249 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24250 {
24251 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24252 }
24253#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24254 template <typename Allocator>
24255 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24256 {
24257 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24258 uint32_t sparseMemoryRequirementCount;
24259 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24260 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24261 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24262 return sparseMemoryRequirements;
24263 }
24264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24265
24266 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24267 {
24268 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24269 }
24270#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24271 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24272 {
24273 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024274 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 -070024275 return createResultValue( result, fence, "vk::Device::createFence" );
24276 }
24277#ifndef VULKAN_HPP_NO_SMART_HANDLE
24278 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24279 {
24280 FenceDeleter deleter( *this, allocator );
24281 return UniqueFence( createFence( createInfo, allocator ), deleter );
24282 }
24283#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24285
24286 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24287 {
24288 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24289 }
24290#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24291 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24292 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024293 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024294 }
24295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24296
24297 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24298 {
24299 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24300 }
24301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24302 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24303 {
24304 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24305 return createResultValue( result, "vk::Device::resetFences" );
24306 }
24307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24308
24309#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24310 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24311 {
24312 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24313 }
24314#else
24315 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24316 {
24317 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24318 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24319 }
24320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24321
24322 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24323 {
24324 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24325 }
24326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24327 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24328 {
24329 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24330 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24331 }
24332#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24333
24334 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24335 {
24336 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24337 }
24338#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24339 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24340 {
24341 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024342 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 -070024343 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24344 }
24345#ifndef VULKAN_HPP_NO_SMART_HANDLE
24346 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24347 {
24348 SemaphoreDeleter deleter( *this, allocator );
24349 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24350 }
24351#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24353
24354 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24355 {
24356 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24357 }
24358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24359 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24360 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024361 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024362 }
24363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24364
24365 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24366 {
24367 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24368 }
24369#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24370 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24371 {
24372 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024373 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 -070024374 return createResultValue( result, event, "vk::Device::createEvent" );
24375 }
24376#ifndef VULKAN_HPP_NO_SMART_HANDLE
24377 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24378 {
24379 EventDeleter deleter( *this, allocator );
24380 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24381 }
24382#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24383#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24384
24385 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24386 {
24387 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24388 }
24389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24390 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24391 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024392 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024393 }
24394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24395
24396#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24397 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24398 {
24399 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24400 }
24401#else
24402 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24403 {
24404 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24405 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24406 }
24407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24408
24409#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24410 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24411 {
24412 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24413 }
24414#else
24415 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24416 {
24417 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24418 return createResultValue( result, "vk::Device::setEvent" );
24419 }
24420#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24421
24422#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24423 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24424 {
24425 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24426 }
24427#else
24428 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24429 {
24430 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24431 return createResultValue( result, "vk::Device::resetEvent" );
24432 }
24433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24434
24435 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24436 {
24437 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24438 }
24439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24440 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24441 {
24442 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024443 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 -070024444 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24445 }
24446#ifndef VULKAN_HPP_NO_SMART_HANDLE
24447 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24448 {
24449 QueryPoolDeleter deleter( *this, allocator );
24450 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24451 }
24452#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24454
24455 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24456 {
24457 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24458 }
24459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24460 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24461 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024462 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024463 }
24464#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24465
24466 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24467 {
24468 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24469 }
24470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24471 template <typename T>
24472 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24473 {
24474 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 ) ) );
24475 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24476 }
24477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24478
24479 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24480 {
24481 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24482 }
24483#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24484 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24485 {
24486 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024487 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 -070024488 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24489 }
24490#ifndef VULKAN_HPP_NO_SMART_HANDLE
24491 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24492 {
24493 BufferDeleter deleter( *this, allocator );
24494 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24495 }
24496#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24498
24499 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24500 {
24501 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24502 }
24503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24504 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24505 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024506 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024507 }
24508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24509
24510 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24511 {
24512 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24513 }
24514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24515 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24516 {
24517 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024518 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 -070024519 return createResultValue( result, view, "vk::Device::createBufferView" );
24520 }
24521#ifndef VULKAN_HPP_NO_SMART_HANDLE
24522 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24523 {
24524 BufferViewDeleter deleter( *this, allocator );
24525 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24526 }
24527#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24529
24530 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24531 {
24532 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24533 }
24534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24535 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24536 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024537 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024538 }
24539#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24540
24541 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24542 {
24543 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24544 }
24545#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24546 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24547 {
24548 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024549 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 -070024550 return createResultValue( result, image, "vk::Device::createImage" );
24551 }
24552#ifndef VULKAN_HPP_NO_SMART_HANDLE
24553 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24554 {
24555 ImageDeleter deleter( *this, allocator );
24556 return UniqueImage( createImage( createInfo, allocator ), deleter );
24557 }
24558#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24560
24561 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24562 {
24563 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24564 }
24565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24566 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24567 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024568 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024569 }
24570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24571
24572 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24573 {
24574 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24575 }
24576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24577 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24578 {
24579 SubresourceLayout layout;
24580 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24581 return layout;
24582 }
24583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24584
24585 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24586 {
24587 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24588 }
24589#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24590 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24591 {
24592 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024593 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 -070024594 return createResultValue( result, view, "vk::Device::createImageView" );
24595 }
24596#ifndef VULKAN_HPP_NO_SMART_HANDLE
24597 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24598 {
24599 ImageViewDeleter deleter( *this, allocator );
24600 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24601 }
24602#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24604
24605 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24606 {
24607 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24608 }
24609#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24610 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24611 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024612 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024613 }
24614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24615
24616 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24617 {
24618 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24619 }
24620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24621 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24622 {
24623 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024624 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 -070024625 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24626 }
24627#ifndef VULKAN_HPP_NO_SMART_HANDLE
24628 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24629 {
24630 ShaderModuleDeleter deleter( *this, allocator );
24631 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24632 }
24633#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24635
24636 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24637 {
24638 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24639 }
24640#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24641 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24642 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024643 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024644 }
24645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24646
24647 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24648 {
24649 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24650 }
24651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24652 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24653 {
24654 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024655 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 -070024656 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24657 }
24658#ifndef VULKAN_HPP_NO_SMART_HANDLE
24659 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24660 {
24661 PipelineCacheDeleter deleter( *this, allocator );
24662 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24663 }
24664#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24666
24667 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24668 {
24669 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24670 }
24671#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24672 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24673 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024674 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024675 }
24676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24677
24678 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24679 {
24680 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24681 }
24682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24683 template <typename Allocator>
24684 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24685 {
24686 std::vector<uint8_t,Allocator> data;
24687 size_t dataSize;
24688 Result result;
24689 do
24690 {
24691 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24692 if ( ( result == Result::eSuccess ) && dataSize )
24693 {
24694 data.resize( dataSize );
24695 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24696 }
24697 } while ( result == Result::eIncomplete );
24698 assert( dataSize <= data.size() );
24699 data.resize( dataSize );
24700 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24701 }
24702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24703
24704 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24705 {
24706 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24707 }
24708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24709 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24710 {
24711 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24712 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24713 }
24714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24715
24716 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24717 {
24718 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 ) ) );
24719 }
24720#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24721 template <typename Allocator>
24722 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24723 {
24724 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024725 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 -070024726 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24727 }
24728 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24729 {
24730 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024731 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 -070024732 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24733 }
24734#ifndef VULKAN_HPP_NO_SMART_HANDLE
24735 template <typename Allocator>
24736 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24737 {
24738 PipelineDeleter deleter( *this, allocator );
24739 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24740 std::vector<UniquePipeline> uniquePipelines;
24741 uniquePipelines.reserve( pipelines.size() );
24742 for ( auto pipeline : pipelines )
24743 {
24744 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24745 }
24746 return uniquePipelines;
24747 }
24748 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24749 {
24750 PipelineDeleter deleter( *this, allocator );
24751 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24752 }
24753#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24754#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24755
24756 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24757 {
24758 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 ) ) );
24759 }
24760#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24761 template <typename Allocator>
24762 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24763 {
24764 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024765 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 -070024766 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24767 }
24768 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24769 {
24770 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024771 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 -070024772 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24773 }
24774#ifndef VULKAN_HPP_NO_SMART_HANDLE
24775 template <typename Allocator>
24776 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24777 {
24778 PipelineDeleter deleter( *this, allocator );
24779 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24780 std::vector<UniquePipeline> uniquePipelines;
24781 uniquePipelines.reserve( pipelines.size() );
24782 for ( auto pipeline : pipelines )
24783 {
24784 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24785 }
24786 return uniquePipelines;
24787 }
24788 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24789 {
24790 PipelineDeleter deleter( *this, allocator );
24791 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24792 }
24793#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24794#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24795
24796 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24797 {
24798 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24799 }
24800#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24801 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24802 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024803 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024804 }
24805#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24806
24807 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24808 {
24809 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24810 }
24811#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24812 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24813 {
24814 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024815 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 -070024816 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
24817 }
24818#ifndef VULKAN_HPP_NO_SMART_HANDLE
24819 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24820 {
24821 PipelineLayoutDeleter deleter( *this, allocator );
24822 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
24823 }
24824#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24826
24827 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
24828 {
24829 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24830 }
24831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24832 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
24833 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024834 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024835 }
24836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24837
24838 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
24839 {
24840 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
24841 }
24842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24843 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24844 {
24845 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024846 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 -070024847 return createResultValue( result, sampler, "vk::Device::createSampler" );
24848 }
24849#ifndef VULKAN_HPP_NO_SMART_HANDLE
24850 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24851 {
24852 SamplerDeleter deleter( *this, allocator );
24853 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
24854 }
24855#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24857
24858 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
24859 {
24860 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24861 }
24862#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24863 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
24864 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024865 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024866 }
24867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24868
24869 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
24870 {
24871 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
24872 }
24873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24874 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24875 {
24876 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024877 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 -070024878 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
24879 }
24880#ifndef VULKAN_HPP_NO_SMART_HANDLE
24881 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24882 {
24883 DescriptorSetLayoutDeleter deleter( *this, allocator );
24884 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
24885 }
24886#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24888
24889 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
24890 {
24891 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24892 }
24893#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24894 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
24895 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024896 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024897 }
24898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24899
24900 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
24901 {
24902 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
24903 }
24904#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24905 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24906 {
24907 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024908 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 -070024909 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
24910 }
24911#ifndef VULKAN_HPP_NO_SMART_HANDLE
24912 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24913 {
24914 DescriptorPoolDeleter deleter( *this, allocator );
24915 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
24916 }
24917#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24919
24920 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
24921 {
24922 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24923 }
24924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24925 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
24926 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024927 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024928 }
24929#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24930
24931#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24932 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24933 {
24934 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24935 }
24936#else
24937 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24938 {
24939 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24940 return createResultValue( result, "vk::Device::resetDescriptorPool" );
24941 }
24942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24943
24944 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
24945 {
24946 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
24947 }
24948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24949 template <typename Allocator>
24950 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
24951 {
24952 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
24953 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
24954 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
24955 }
24956#ifndef VULKAN_HPP_NO_SMART_HANDLE
24957 template <typename Allocator>
24958 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
24959 {
24960 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
24961 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
24962 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
24963 uniqueDescriptorSets.reserve( descriptorSets.size() );
24964 for ( auto descriptorSet : descriptorSets )
24965 {
24966 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
24967 }
24968 return uniqueDescriptorSets;
24969 }
24970#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24971#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24972
24973 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
24974 {
24975 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
24976 }
24977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24978 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
24979 {
24980 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
24981 return createResultValue( result, "vk::Device::freeDescriptorSets" );
24982 }
24983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24984
24985 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
24986 {
24987 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
24988 }
24989#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24990 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
24991 {
24992 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
24993 }
24994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24995
24996 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
24997 {
24998 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
24999 }
25000#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25001 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25002 {
25003 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025004 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 -070025005 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
25006 }
25007#ifndef VULKAN_HPP_NO_SMART_HANDLE
25008 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25009 {
25010 FramebufferDeleter deleter( *this, allocator );
25011 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
25012 }
25013#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25015
25016 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
25017 {
25018 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25019 }
25020#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25021 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
25022 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025023 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025024 }
25025#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25026
25027 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
25028 {
25029 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
25030 }
25031#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25032 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25033 {
25034 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025035 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 -070025036 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
25037 }
25038#ifndef VULKAN_HPP_NO_SMART_HANDLE
25039 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25040 {
25041 RenderPassDeleter deleter( *this, allocator );
25042 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
25043 }
25044#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25046
25047 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
25048 {
25049 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25050 }
25051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25052 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
25053 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025054 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025055 }
25056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25057
25058 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
25059 {
25060 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
25061 }
25062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25063 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
25064 {
25065 Extent2D granularity;
25066 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
25067 return granularity;
25068 }
25069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25070
25071 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
25072 {
25073 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
25074 }
25075#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25076 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25077 {
25078 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025079 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 -070025080 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
25081 }
25082#ifndef VULKAN_HPP_NO_SMART_HANDLE
25083 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25084 {
25085 CommandPoolDeleter deleter( *this, allocator );
25086 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
25087 }
25088#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25090
25091 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
25092 {
25093 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25094 }
25095#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25096 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
25097 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025098 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025099 }
25100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25101
25102#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25103 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25104 {
25105 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25106 }
25107#else
25108 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25109 {
25110 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25111 return createResultValue( result, "vk::Device::resetCommandPool" );
25112 }
25113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25114
25115 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
25116 {
25117 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
25118 }
25119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25120 template <typename Allocator>
25121 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
25122 {
25123 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
25124 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
25125 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
25126 }
25127#ifndef VULKAN_HPP_NO_SMART_HANDLE
25128 template <typename Allocator>
25129 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
25130 {
25131 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
25132 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
25133 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
25134 uniqueCommandBuffers.reserve( commandBuffers.size() );
25135 for ( auto commandBuffer : commandBuffers )
25136 {
25137 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
25138 }
25139 return uniqueCommandBuffers;
25140 }
25141#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25143
25144 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
25145 {
25146 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
25147 }
25148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25149 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
25150 {
25151 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
25152 }
25153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25154
25155 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
25156 {
25157 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
25158 }
25159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25160 template <typename Allocator>
25161 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25162 {
25163 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025164 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 -070025165 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
25166 }
25167 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25168 {
25169 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025170 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 -070025171 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
25172 }
25173#ifndef VULKAN_HPP_NO_SMART_HANDLE
25174 template <typename Allocator>
25175 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25176 {
25177 SwapchainKHRDeleter deleter( *this, allocator );
25178 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
25179 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
25180 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
25181 for ( auto swapchainKHR : swapchainKHRs )
25182 {
25183 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
25184 }
25185 return uniqueSwapchainKHRs;
25186 }
25187 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25188 {
25189 SwapchainKHRDeleter deleter( *this, allocator );
25190 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
25191 }
25192#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25194
25195 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25196 {
25197 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25198 }
25199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25200 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25201 {
25202 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025203 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 -070025204 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25205 }
25206#ifndef VULKAN_HPP_NO_SMART_HANDLE
25207 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25208 {
25209 SwapchainKHRDeleter deleter( *this, allocator );
25210 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25211 }
25212#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25214
25215 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25216 {
25217 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25218 }
25219#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25220 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25221 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025222 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025223 }
25224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25225
25226 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25227 {
25228 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25229 }
25230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25231 template <typename Allocator>
25232 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25233 {
25234 std::vector<Image,Allocator> swapchainImages;
25235 uint32_t swapchainImageCount;
25236 Result result;
25237 do
25238 {
25239 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25240 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25241 {
25242 swapchainImages.resize( swapchainImageCount );
25243 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25244 }
25245 } while ( result == Result::eIncomplete );
25246 assert( swapchainImageCount <= swapchainImages.size() );
25247 swapchainImages.resize( swapchainImageCount );
25248 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25249 }
25250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25251
25252 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25253 {
25254 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25255 }
25256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25257 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25258 {
25259 uint32_t imageIndex;
25260 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25261 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25262 }
25263#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25264
25265 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25266 {
25267 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25268 }
25269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25270 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25271 {
25272 DebugMarkerObjectNameInfoEXT nameInfo;
25273 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25274 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25275 }
25276#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25277
25278 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25279 {
25280 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25281 }
25282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25283 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25284 {
25285 DebugMarkerObjectTagInfoEXT tagInfo;
25286 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25287 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25288 }
25289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25290
25291#ifdef VK_USE_PLATFORM_WIN32_KHR
25292 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25293 {
25294 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25295 }
25296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25297 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25298 {
25299 HANDLE handle;
25300 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25301 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25302 }
25303#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25304#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25305
25306 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25307 {
25308 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25309 }
25310#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25311 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25312 {
25313 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025314 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 -070025315 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25316 }
25317#ifndef VULKAN_HPP_NO_SMART_HANDLE
25318 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25319 {
25320 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25321 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25322 }
25323#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25325
25326 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25327 {
25328 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25329 }
25330#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25331 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25332 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025333 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025334 }
25335#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25336
25337 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25338 {
25339 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25340 }
25341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25342 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25343 {
25344 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025345 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 -070025346 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25347 }
25348#ifndef VULKAN_HPP_NO_SMART_HANDLE
25349 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25350 {
25351 ObjectTableNVXDeleter deleter( *this, allocator );
25352 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25353 }
25354#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25355#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25356
25357 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25358 {
25359 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25360 }
25361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25362 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25363 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025364 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025365 }
25366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25367
25368 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25369 {
25370 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25371 }
25372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25373 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25374 {
25375#ifdef VULKAN_HPP_NO_EXCEPTIONS
25376 assert( pObjectTableEntries.size() == objectIndices.size() );
25377#else
25378 if ( pObjectTableEntries.size() != objectIndices.size() )
25379 {
25380 throw std::logic_error( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
25381 }
25382#endif // VULKAN_HPP_NO_EXCEPTIONS
25383 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25384 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25385 }
25386#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25387
25388 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25389 {
25390 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25391 }
25392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25393 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25394 {
25395#ifdef VULKAN_HPP_NO_EXCEPTIONS
25396 assert( objectEntryTypes.size() == objectIndices.size() );
25397#else
25398 if ( objectEntryTypes.size() != objectIndices.size() )
25399 {
25400 throw std::logic_error( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
25401 }
25402#endif // VULKAN_HPP_NO_EXCEPTIONS
25403 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25404 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25405 }
25406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25407
25408 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25409 {
25410 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25411 }
25412
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025413#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025414 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25415 {
25416 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25417 }
25418#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25419 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25420 {
25421 HANDLE handle;
25422 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25423 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25424 }
25425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025426#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025427
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025428#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025429 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25430 {
25431 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25432 }
25433#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25434 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25435 {
25436 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25437 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25438 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25439 }
25440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025441#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025442
25443 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25444 {
25445 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25446 }
25447#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25448 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25449 {
25450 int fd;
25451 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25452 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25453 }
25454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25455
25456 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25457 {
25458 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25459 }
25460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25461 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25462 {
25463 MemoryFdPropertiesKHX memoryFdProperties;
25464 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25465 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25466 }
25467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25468
25469#ifdef VK_USE_PLATFORM_WIN32_KHX
25470 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25471 {
25472 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25473 }
25474#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25475 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25476 {
25477 HANDLE handle;
25478 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25479 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25480 }
25481#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25482#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25483
25484#ifdef VK_USE_PLATFORM_WIN32_KHX
25485 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25486 {
25487 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25488 }
25489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25490 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25491 {
25492 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25493 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25494 }
25495#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25496#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25497
25498 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25499 {
25500 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25501 }
25502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25503 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25504 {
25505 int fd;
25506 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25507 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25508 }
25509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25510
25511 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25512 {
25513 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25514 }
25515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25516 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25517 {
25518 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25519 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25520 }
25521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25522
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025523 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25524 {
25525 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25526 }
25527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25528 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25529 {
25530 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25531 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25532 }
25533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25534
25535 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25536 {
25537 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25538 }
25539#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25540 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25541 {
25542 Fence fence;
25543 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25544 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25545 }
25546#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25547
25548 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25549 {
25550 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 ) ) );
25551 }
25552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25553 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25554 {
25555 Fence fence;
25556 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 ) ) );
25557 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25558 }
25559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25560
25561 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25562 {
25563 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25564 }
25565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25566 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25567 {
25568 uint64_t counterValue;
25569 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25570 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25571 }
25572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025573
25574 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25575 {
25576 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25577 }
25578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25579 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25580 {
25581 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25582 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25583 return peerMemoryFeatures;
25584 }
25585#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25586
25587 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25588 {
25589 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25590 }
25591#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25592 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25593 {
25594 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25595 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25596 }
25597#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25598
25599 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25600 {
25601 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25602 }
25603#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25604 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25605 {
25606 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25607 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25608 }
25609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25610
25611 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25612 {
25613 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25614 }
25615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25616 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25617 {
25618 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25619 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25620 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25621 }
25622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25623
25624 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25625 {
25626 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25627 }
25628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25629 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25630 {
25631 DeviceGroupPresentModeFlagsKHX modes;
25632 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25633 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25634 }
25635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25636
25637 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25638 {
25639 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25640 }
25641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25642 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25643 {
25644 uint32_t imageIndex;
25645 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25646 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25647 }
25648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25649
25650 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25651 {
25652 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25653 }
25654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25655 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25656 {
25657 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025658 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 -070025659 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25660 }
25661#ifndef VULKAN_HPP_NO_SMART_HANDLE
25662 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25663 {
25664 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25665 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25666 }
25667#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25669
25670 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25671 {
25672 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25673 }
25674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25675 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25676 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025677 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025678 }
25679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25680
25681 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25682 {
25683 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25684 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025685
25686 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25687 {
25688 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25689 }
25690#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25691 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25692 {
25693#ifdef VULKAN_HPP_NO_EXCEPTIONS
25694 assert( swapchains.size() == metadata.size() );
25695#else
25696 if ( swapchains.size() != metadata.size() )
25697 {
25698 throw std::logic_error( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
25699 }
25700#endif // VULKAN_HPP_NO_EXCEPTIONS
25701 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25702 }
25703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25704
25705 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25706 {
25707 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25708 }
25709#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25710 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25711 {
25712 RefreshCycleDurationGOOGLE displayTimingProperties;
25713 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25714 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25715 }
25716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25717
25718 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25719 {
25720 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25721 }
25722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25723 template <typename Allocator>
25724 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25725 {
25726 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25727 uint32_t presentationTimingCount;
25728 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25729 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25730 {
25731 presentationTimings.resize( presentationTimingCount );
25732 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25733 }
25734 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25735 }
25736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25737
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025738#ifndef VULKAN_HPP_NO_SMART_HANDLE
25739 class DeviceDeleter;
25740 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25741#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25742
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025743 class PhysicalDevice
25744 {
25745 public:
25746 PhysicalDevice()
25747 : m_physicalDevice(VK_NULL_HANDLE)
25748 {}
25749
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025750 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025751 : m_physicalDevice(VK_NULL_HANDLE)
25752 {}
25753
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025754 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025755 : m_physicalDevice(physicalDevice)
25756 {}
25757
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025758#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025759 PhysicalDevice& operator=(VkPhysicalDevice physicalDevice)
25760 {
25761 m_physicalDevice = physicalDevice;
25762 return *this;
25763 }
25764#endif
25765
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025766 PhysicalDevice& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025767 {
25768 m_physicalDevice = VK_NULL_HANDLE;
25769 return *this;
25770 }
25771
Lenny Komowebf33162016-08-26 14:10:08 -060025772 bool operator==(PhysicalDevice const &rhs) const
25773 {
25774 return m_physicalDevice == rhs.m_physicalDevice;
25775 }
25776
25777 bool operator!=(PhysicalDevice const &rhs) const
25778 {
25779 return m_physicalDevice != rhs.m_physicalDevice;
25780 }
25781
25782 bool operator<(PhysicalDevice const &rhs) const
25783 {
25784 return m_physicalDevice < rhs.m_physicalDevice;
25785 }
25786
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025787 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025789 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25791
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025792 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025794 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25795 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025796#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25797
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025798 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025799#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025800 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025801#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25802
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025803 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025805 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025806#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25807
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025808 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025810 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25812
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025813 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025814#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025815 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25817
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025818 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025820 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25821#ifndef VULKAN_HPP_NO_SMART_HANDLE
25822 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25823#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25825
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025826 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025827#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025828 template <typename Allocator = std::allocator<LayerProperties>>
25829 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025830#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25831
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025832 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025833#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025834 template <typename Allocator = std::allocator<ExtensionProperties>>
25835 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25837
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025838 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 -060025839#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025840 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
25841 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025842#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25843
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025844 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025845#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025846 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
25847 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25849
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025850 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025852 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
25853 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25855
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025856 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025858 template <typename Allocator = std::allocator<DisplayKHR>>
25859 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025860#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25861
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025862 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025864 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
25865 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25867
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025868 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025869#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025870 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025871#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25872
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025873 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025874#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025875 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025876#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25877
25878#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025879 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
25880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25881 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
25882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025883#endif /*VK_USE_PLATFORM_MIR_KHR*/
25884
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025885 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025886#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025887 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025888#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25889
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025890 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025892 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25894
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025895 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025897 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
25898 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025899#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25900
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025901 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025902#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025903 template <typename Allocator = std::allocator<PresentModeKHR>>
25904 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25906
25907#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025908 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
25909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25910 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
25911#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025912#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
25913
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025914#ifdef VK_USE_PLATFORM_WIN32_KHR
25915 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
25916#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25917
25918#ifdef VK_USE_PLATFORM_XLIB_KHR
25919 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025921 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
25922#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25923#endif /*VK_USE_PLATFORM_XLIB_KHR*/
25924
25925#ifdef VK_USE_PLATFORM_XCB_KHR
25926 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
25927#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25928 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
25929#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25930#endif /*VK_USE_PLATFORM_XCB_KHR*/
25931
25932 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
25933#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25934 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
25935#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25936
25937 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
25938#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25939 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
25940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25941
25942 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
25943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25944 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
25945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25946
25947 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
25948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25949 PhysicalDeviceProperties2KHR getProperties2KHR() const;
25950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25951
25952 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
25953#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25954 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
25955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25956
25957 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
25958#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25959 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
25960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25961
25962 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
25963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25964 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
25965 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
25966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25967
25968 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
25969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25970 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
25971#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25972
25973 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
25974#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25975 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
25976 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25978
Mark Young0f183a82017-02-28 09:58:04 -070025979 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
25980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25981 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
25982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25983
25984 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
25985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25986 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
25987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25988
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025989#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025990 Result releaseDisplayEXT( DisplayKHR display ) const;
25991#else
25992 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25994
25995#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025996 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025997#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025998 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025999#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026000#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26001
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026002#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26003 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070026004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026005 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070026006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026007#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070026008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026009 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070026010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026011 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070026012#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26013
Mark Young0f183a82017-02-28 09:58:04 -070026014 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
26015#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26016 template <typename Allocator = std::allocator<Rect2D>>
26017 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
26018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26019
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026020 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026021 {
26022 return m_physicalDevice;
26023 }
26024
26025 explicit operator bool() const
26026 {
26027 return m_physicalDevice != VK_NULL_HANDLE;
26028 }
26029
26030 bool operator!() const
26031 {
26032 return m_physicalDevice == VK_NULL_HANDLE;
26033 }
26034
26035 private:
26036 VkPhysicalDevice m_physicalDevice;
26037 };
26038 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
26039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026040#ifndef VULKAN_HPP_NO_SMART_HANDLE
26041 class DeviceDeleter
26042 {
26043 public:
26044 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
26045 : m_allocator( allocator )
26046 {}
26047
26048 void operator()( Device device )
26049 {
26050 device.destroy( m_allocator );
26051 }
26052
26053 private:
26054 Optional<const AllocationCallbacks> m_allocator;
26055 };
26056#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26057
26058 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
26059 {
26060 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
26061 }
26062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26063 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
26064 {
26065 PhysicalDeviceProperties properties;
26066 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
26067 return properties;
26068 }
26069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26070
26071 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
26072 {
26073 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
26074 }
26075#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26076 template <typename Allocator>
26077 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
26078 {
26079 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
26080 uint32_t queueFamilyPropertyCount;
26081 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26082 queueFamilyProperties.resize( queueFamilyPropertyCount );
26083 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
26084 return queueFamilyProperties;
26085 }
26086#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26087
26088 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
26089 {
26090 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
26091 }
26092#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26093 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
26094 {
26095 PhysicalDeviceMemoryProperties memoryProperties;
26096 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
26097 return memoryProperties;
26098 }
26099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26100
26101 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
26102 {
26103 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
26104 }
26105#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26106 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
26107 {
26108 PhysicalDeviceFeatures features;
26109 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
26110 return features;
26111 }
26112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26113
26114 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
26115 {
26116 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
26117 }
26118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26119 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
26120 {
26121 FormatProperties formatProperties;
26122 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
26123 return formatProperties;
26124 }
26125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26126
26127 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
26128 {
26129 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 ) ) );
26130 }
26131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26132 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
26133 {
26134 ImageFormatProperties imageFormatProperties;
26135 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 ) ) );
26136 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
26137 }
26138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26139
26140 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
26141 {
26142 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
26143 }
26144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26145 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26146 {
26147 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026148 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 -070026149 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
26150 }
26151#ifndef VULKAN_HPP_NO_SMART_HANDLE
26152 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26153 {
26154 DeviceDeleter deleter( allocator );
26155 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
26156 }
26157#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26158#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26159
26160 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
26161 {
26162 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
26163 }
26164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26165 template <typename Allocator>
26166 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
26167 {
26168 std::vector<LayerProperties,Allocator> properties;
26169 uint32_t propertyCount;
26170 Result result;
26171 do
26172 {
26173 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
26174 if ( ( result == Result::eSuccess ) && propertyCount )
26175 {
26176 properties.resize( propertyCount );
26177 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
26178 }
26179 } while ( result == Result::eIncomplete );
26180 assert( propertyCount <= properties.size() );
26181 properties.resize( propertyCount );
26182 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
26183 }
26184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26185
26186 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
26187 {
26188 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
26189 }
26190#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26191 template <typename Allocator>
26192 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26193 {
26194 std::vector<ExtensionProperties,Allocator> properties;
26195 uint32_t propertyCount;
26196 Result result;
26197 do
26198 {
26199 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26200 if ( ( result == Result::eSuccess ) && propertyCount )
26201 {
26202 properties.resize( propertyCount );
26203 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26204 }
26205 } while ( result == Result::eIncomplete );
26206 assert( propertyCount <= properties.size() );
26207 properties.resize( propertyCount );
26208 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26209 }
26210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26211
26212 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26213 {
26214 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 ) );
26215 }
26216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26217 template <typename Allocator>
26218 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26219 {
26220 std::vector<SparseImageFormatProperties,Allocator> properties;
26221 uint32_t propertyCount;
26222 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 );
26223 properties.resize( propertyCount );
26224 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() ) );
26225 return properties;
26226 }
26227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26228
26229 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26230 {
26231 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26232 }
26233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26234 template <typename Allocator>
26235 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26236 {
26237 std::vector<DisplayPropertiesKHR,Allocator> properties;
26238 uint32_t propertyCount;
26239 Result result;
26240 do
26241 {
26242 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26243 if ( ( result == Result::eSuccess ) && propertyCount )
26244 {
26245 properties.resize( propertyCount );
26246 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26247 }
26248 } while ( result == Result::eIncomplete );
26249 assert( propertyCount <= properties.size() );
26250 properties.resize( propertyCount );
26251 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26252 }
26253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26254
26255 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26256 {
26257 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26258 }
26259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26260 template <typename Allocator>
26261 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26262 {
26263 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26264 uint32_t propertyCount;
26265 Result result;
26266 do
26267 {
26268 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26269 if ( ( result == Result::eSuccess ) && propertyCount )
26270 {
26271 properties.resize( propertyCount );
26272 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26273 }
26274 } while ( result == Result::eIncomplete );
26275 assert( propertyCount <= properties.size() );
26276 properties.resize( propertyCount );
26277 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26278 }
26279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26280
26281 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26282 {
26283 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26284 }
26285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26286 template <typename Allocator>
26287 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26288 {
26289 std::vector<DisplayKHR,Allocator> displays;
26290 uint32_t displayCount;
26291 Result result;
26292 do
26293 {
26294 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26295 if ( ( result == Result::eSuccess ) && displayCount )
26296 {
26297 displays.resize( displayCount );
26298 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26299 }
26300 } while ( result == Result::eIncomplete );
26301 assert( displayCount <= displays.size() );
26302 displays.resize( displayCount );
26303 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26304 }
26305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26306
26307 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26308 {
26309 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26310 }
26311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26312 template <typename Allocator>
26313 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26314 {
26315 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26316 uint32_t propertyCount;
26317 Result result;
26318 do
26319 {
26320 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26321 if ( ( result == Result::eSuccess ) && propertyCount )
26322 {
26323 properties.resize( propertyCount );
26324 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26325 }
26326 } while ( result == Result::eIncomplete );
26327 assert( propertyCount <= properties.size() );
26328 properties.resize( propertyCount );
26329 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26330 }
26331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26332
26333 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26334 {
26335 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 ) ) );
26336 }
26337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26338 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26339 {
26340 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026341 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 -070026342 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26343 }
26344#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26345
26346 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26347 {
26348 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26349 }
26350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26351 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26352 {
26353 DisplayPlaneCapabilitiesKHR capabilities;
26354 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26355 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26356 }
26357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26358
26359#ifdef VK_USE_PLATFORM_MIR_KHR
26360 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26361 {
26362 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26363 }
26364#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26365 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26366 {
26367 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26368 }
26369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26370#endif /*VK_USE_PLATFORM_MIR_KHR*/
26371
26372 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26373 {
26374 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26375 }
26376#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26377 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26378 {
26379 Bool32 supported;
26380 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26381 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26382 }
26383#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26384
26385 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26386 {
26387 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26388 }
26389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26390 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26391 {
26392 SurfaceCapabilitiesKHR surfaceCapabilities;
26393 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26394 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26395 }
26396#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26397
26398 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26399 {
26400 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26401 }
26402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26403 template <typename Allocator>
26404 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26405 {
26406 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26407 uint32_t surfaceFormatCount;
26408 Result result;
26409 do
26410 {
26411 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26412 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26413 {
26414 surfaceFormats.resize( surfaceFormatCount );
26415 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26416 }
26417 } while ( result == Result::eIncomplete );
26418 assert( surfaceFormatCount <= surfaceFormats.size() );
26419 surfaceFormats.resize( surfaceFormatCount );
26420 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26421 }
26422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26423
26424 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26425 {
26426 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26427 }
26428#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26429 template <typename Allocator>
26430 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26431 {
26432 std::vector<PresentModeKHR,Allocator> presentModes;
26433 uint32_t presentModeCount;
26434 Result result;
26435 do
26436 {
26437 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26438 if ( ( result == Result::eSuccess ) && presentModeCount )
26439 {
26440 presentModes.resize( presentModeCount );
26441 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26442 }
26443 } while ( result == Result::eIncomplete );
26444 assert( presentModeCount <= presentModes.size() );
26445 presentModes.resize( presentModeCount );
26446 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26447 }
26448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26449
26450#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26451 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26452 {
26453 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26454 }
26455#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26456 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26457 {
26458 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26459 }
26460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26461#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26462
26463#ifdef VK_USE_PLATFORM_WIN32_KHR
26464 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26465 {
26466 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26467 }
26468#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26469
26470#ifdef VK_USE_PLATFORM_XLIB_KHR
26471 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26472 {
26473 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26474 }
26475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26476 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26477 {
26478 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26479 }
26480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26481#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26482
26483#ifdef VK_USE_PLATFORM_XCB_KHR
26484 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26485 {
26486 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26487 }
26488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26489 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26490 {
26491 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26492 }
26493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26494#endif /*VK_USE_PLATFORM_XCB_KHR*/
26495
26496 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26497 {
26498 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 ) ) );
26499 }
26500#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26501 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26502 {
26503 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26504 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 ) ) );
26505 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26506 }
26507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26508
26509 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26510 {
26511 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26512 }
26513#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26514 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26515 {
26516 DeviceGeneratedCommandsLimitsNVX limits;
26517 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26518 return limits;
26519 }
26520#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26521
26522 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26523 {
26524 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26525 }
26526#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26527 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26528 {
26529 PhysicalDeviceFeatures2KHR features;
26530 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26531 return features;
26532 }
26533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26534
26535 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26536 {
26537 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26538 }
26539#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26540 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26541 {
26542 PhysicalDeviceProperties2KHR properties;
26543 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26544 return properties;
26545 }
26546#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26547
26548 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26549 {
26550 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26551 }
26552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26553 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26554 {
26555 FormatProperties2KHR formatProperties;
26556 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26557 return formatProperties;
26558 }
26559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26560
26561 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26562 {
26563 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26564 }
26565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26566 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26567 {
26568 ImageFormatProperties2KHR imageFormatProperties;
26569 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26570 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26571 }
26572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26573
26574 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26575 {
26576 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26577 }
26578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26579 template <typename Allocator>
26580 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26581 {
26582 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26583 uint32_t queueFamilyPropertyCount;
26584 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26585 queueFamilyProperties.resize( queueFamilyPropertyCount );
26586 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26587 return queueFamilyProperties;
26588 }
26589#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26590
26591 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26592 {
26593 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26594 }
26595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26596 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26597 {
26598 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26599 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26600 return memoryProperties;
26601 }
26602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26603
26604 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26605 {
26606 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26607 }
26608#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26609 template <typename Allocator>
26610 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26611 {
26612 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26613 uint32_t propertyCount;
26614 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26615 properties.resize( propertyCount );
26616 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26617 return properties;
26618 }
26619#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26620
Mark Young0f183a82017-02-28 09:58:04 -070026621 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26622 {
26623 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26624 }
26625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26626 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26627 {
26628 ExternalBufferPropertiesKHX externalBufferProperties;
26629 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26630 return externalBufferProperties;
26631 }
26632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26633
26634 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26635 {
26636 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26637 }
26638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26639 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26640 {
26641 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26642 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26643 return externalSemaphoreProperties;
26644 }
26645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26646
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026647#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26648 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26649 {
26650 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26651 }
26652#else
26653 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26654 {
26655 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26656 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26657 }
26658#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26659
26660#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26661 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26662 {
26663 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26664 }
26665#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26666 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26667 {
26668 Display dpy;
26669 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26670 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26671 }
26672#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26673#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26674
26675#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26676 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26677 {
26678 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26679 }
26680#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26681 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26682 {
26683 DisplayKHR display;
26684 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26685 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26686 }
26687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26688#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26689
26690 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26691 {
26692 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26693 }
26694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26695 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26696 {
26697 SurfaceCapabilities2EXT surfaceCapabilities;
26698 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26699 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26700 }
26701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026702
26703 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26704 {
26705 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26706 }
26707#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26708 template <typename Allocator>
26709 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26710 {
26711 std::vector<Rect2D,Allocator> rects;
26712 uint32_t rectCount;
26713 Result result;
26714 do
26715 {
26716 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26717 if ( ( result == Result::eSuccess ) && rectCount )
26718 {
26719 rects.resize( rectCount );
26720 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26721 }
26722 } while ( result == Result::eIncomplete );
26723 assert( rectCount <= rects.size() );
26724 rects.resize( rectCount );
26725 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26726 }
26727#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026728
Mark Young0f183a82017-02-28 09:58:04 -070026729 struct CmdProcessCommandsInfoNVX
26730 {
26731 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 )
26732 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26733 , pNext( nullptr )
26734 , objectTable( objectTable_ )
26735 , indirectCommandsLayout( indirectCommandsLayout_ )
26736 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26737 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26738 , maxSequencesCount( maxSequencesCount_ )
26739 , targetCommandBuffer( targetCommandBuffer_ )
26740 , sequencesCountBuffer( sequencesCountBuffer_ )
26741 , sequencesCountOffset( sequencesCountOffset_ )
26742 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26743 , sequencesIndexOffset( sequencesIndexOffset_ )
26744 {
26745 }
26746
26747 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
26748 {
26749 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26750 }
26751
26752 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
26753 {
26754 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26755 return *this;
26756 }
26757
26758 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
26759 {
26760 pNext = pNext_;
26761 return *this;
26762 }
26763
26764 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
26765 {
26766 objectTable = objectTable_;
26767 return *this;
26768 }
26769
26770 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
26771 {
26772 indirectCommandsLayout = indirectCommandsLayout_;
26773 return *this;
26774 }
26775
26776 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
26777 {
26778 indirectCommandsTokenCount = indirectCommandsTokenCount_;
26779 return *this;
26780 }
26781
26782 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
26783 {
26784 pIndirectCommandsTokens = pIndirectCommandsTokens_;
26785 return *this;
26786 }
26787
26788 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
26789 {
26790 maxSequencesCount = maxSequencesCount_;
26791 return *this;
26792 }
26793
26794 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
26795 {
26796 targetCommandBuffer = targetCommandBuffer_;
26797 return *this;
26798 }
26799
26800 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
26801 {
26802 sequencesCountBuffer = sequencesCountBuffer_;
26803 return *this;
26804 }
26805
26806 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
26807 {
26808 sequencesCountOffset = sequencesCountOffset_;
26809 return *this;
26810 }
26811
26812 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
26813 {
26814 sequencesIndexBuffer = sequencesIndexBuffer_;
26815 return *this;
26816 }
26817
26818 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
26819 {
26820 sequencesIndexOffset = sequencesIndexOffset_;
26821 return *this;
26822 }
26823
26824 operator const VkCmdProcessCommandsInfoNVX&() const
26825 {
26826 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
26827 }
26828
26829 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
26830 {
26831 return ( sType == rhs.sType )
26832 && ( pNext == rhs.pNext )
26833 && ( objectTable == rhs.objectTable )
26834 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
26835 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
26836 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
26837 && ( maxSequencesCount == rhs.maxSequencesCount )
26838 && ( targetCommandBuffer == rhs.targetCommandBuffer )
26839 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
26840 && ( sequencesCountOffset == rhs.sequencesCountOffset )
26841 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
26842 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
26843 }
26844
26845 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
26846 {
26847 return !operator==( rhs );
26848 }
26849
26850 private:
26851 StructureType sType;
26852
26853 public:
26854 const void* pNext;
26855 ObjectTableNVX objectTable;
26856 IndirectCommandsLayoutNVX indirectCommandsLayout;
26857 uint32_t indirectCommandsTokenCount;
26858 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
26859 uint32_t maxSequencesCount;
26860 CommandBuffer targetCommandBuffer;
26861 Buffer sequencesCountBuffer;
26862 DeviceSize sequencesCountOffset;
26863 Buffer sequencesIndexBuffer;
26864 DeviceSize sequencesIndexOffset;
26865 };
26866 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
26867
26868 struct PhysicalDeviceGroupPropertiesKHX
26869 {
26870 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
26871 {
26872 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
26873 }
26874
26875 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26876 {
26877 return ( sType == rhs.sType )
26878 && ( pNext == rhs.pNext )
26879 && ( physicalDeviceCount == rhs.physicalDeviceCount )
26880 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
26881 && ( subsetAllocation == rhs.subsetAllocation );
26882 }
26883
26884 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26885 {
26886 return !operator==( rhs );
26887 }
26888
26889 private:
26890 StructureType sType;
26891
26892 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060026893 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070026894 uint32_t physicalDeviceCount;
26895 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
26896 Bool32 subsetAllocation;
26897 };
26898 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
26899
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026900#ifndef VULKAN_HPP_NO_SMART_HANDLE
26901 class DebugReportCallbackEXTDeleter;
26902 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
26903 class SurfaceKHRDeleter;
26904 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
26905#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26906
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026907 class Instance
26908 {
26909 public:
26910 Instance()
26911 : m_instance(VK_NULL_HANDLE)
26912 {}
26913
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026914 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026915 : m_instance(VK_NULL_HANDLE)
26916 {}
26917
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026918 VULKAN_HPP_TYPESAFE_EXPLICIT Instance(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026919 : m_instance(instance)
26920 {}
26921
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026922#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026923 Instance& operator=(VkInstance instance)
26924 {
26925 m_instance = instance;
26926 return *this;
26927 }
26928#endif
26929
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026930 Instance& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026931 {
26932 m_instance = VK_NULL_HANDLE;
26933 return *this;
26934 }
26935
Lenny Komowebf33162016-08-26 14:10:08 -060026936 bool operator==(Instance const &rhs) const
26937 {
26938 return m_instance == rhs.m_instance;
26939 }
26940
26941 bool operator!=(Instance const &rhs) const
26942 {
26943 return m_instance != rhs.m_instance;
26944 }
26945
26946 bool operator<(Instance const &rhs) const
26947 {
26948 return m_instance < rhs.m_instance;
26949 }
26950
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026951 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026953 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26955
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026956 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026958 template <typename Allocator = std::allocator<PhysicalDevice>>
26959 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26961
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026962 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026964 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26966
26967#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026968 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026970 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26971#ifndef VULKAN_HPP_NO_SMART_HANDLE
26972 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26973#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026975#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026976
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026977 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026979 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26980#ifndef VULKAN_HPP_NO_SMART_HANDLE
26981 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26982#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26984
26985#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026986 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026987#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026988 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26989#ifndef VULKAN_HPP_NO_SMART_HANDLE
26990 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26991#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026993#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026994
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026995 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026997 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26999
Mark Young39389872017-01-19 21:10:49 -070027000#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027001 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27002#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27003 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27004#ifndef VULKAN_HPP_NO_SMART_HANDLE
27005 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27006#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27007#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070027008#endif /*VK_USE_PLATFORM_VI_NN*/
27009
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027010#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027011 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27013 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27014#ifndef VULKAN_HPP_NO_SMART_HANDLE
27015 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27016#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27017#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027018#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27019
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027020#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027021 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27023 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27024#ifndef VULKAN_HPP_NO_SMART_HANDLE
27025 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27026#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027028#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27029
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027030#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027031 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27033 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27034#ifndef VULKAN_HPP_NO_SMART_HANDLE
27035 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27036#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027038#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27039
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027040#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027041 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27043 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27044#ifndef VULKAN_HPP_NO_SMART_HANDLE
27045 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27046#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027048#endif /*VK_USE_PLATFORM_XCB_KHR*/
27049
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027050 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027052 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27053#ifndef VULKAN_HPP_NO_SMART_HANDLE
27054 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27055#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27057
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027058 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027060 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27062
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027063 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 -060027064#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027065 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 -060027066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27067
Mark Young0f183a82017-02-28 09:58:04 -070027068 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
27069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27070 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
27071 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
27072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27073
27074#ifdef VK_USE_PLATFORM_IOS_MVK
27075 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27077 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27078#ifndef VULKAN_HPP_NO_SMART_HANDLE
27079 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27080#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27082#endif /*VK_USE_PLATFORM_IOS_MVK*/
27083
27084#ifdef VK_USE_PLATFORM_MACOS_MVK
27085 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27087 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27088#ifndef VULKAN_HPP_NO_SMART_HANDLE
27089 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27090#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27091#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27092#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27093
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027094 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027095 {
27096 return m_instance;
27097 }
27098
27099 explicit operator bool() const
27100 {
27101 return m_instance != VK_NULL_HANDLE;
27102 }
27103
27104 bool operator!() const
27105 {
27106 return m_instance == VK_NULL_HANDLE;
27107 }
27108
27109 private:
27110 VkInstance m_instance;
27111 };
27112 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
27113
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027114#ifndef VULKAN_HPP_NO_SMART_HANDLE
27115 class DebugReportCallbackEXTDeleter
27116 {
27117 public:
27118 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27119 : m_instance( instance )
27120 , m_allocator( allocator )
27121 {}
27122
27123 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
27124 {
27125 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
27126 }
27127
27128 private:
27129 Instance m_instance;
27130 Optional<const AllocationCallbacks> m_allocator;
27131 };
27132
27133 class SurfaceKHRDeleter
27134 {
27135 public:
27136 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27137 : m_instance( instance )
27138 , m_allocator( allocator )
27139 {}
27140
27141 void operator()( SurfaceKHR surfaceKHR )
27142 {
27143 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
27144 }
27145
27146 private:
27147 Instance m_instance;
27148 Optional<const AllocationCallbacks> m_allocator;
27149 };
27150#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27151
27152 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
27153 {
27154 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27155 }
27156#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27157 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
27158 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027159 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027160 }
27161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27162
27163 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
27164 {
27165 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
27166 }
27167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27168 template <typename Allocator>
27169 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
27170 {
27171 std::vector<PhysicalDevice,Allocator> physicalDevices;
27172 uint32_t physicalDeviceCount;
27173 Result result;
27174 do
27175 {
27176 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
27177 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
27178 {
27179 physicalDevices.resize( physicalDeviceCount );
27180 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
27181 }
27182 } while ( result == Result::eIncomplete );
27183 assert( physicalDeviceCount <= physicalDevices.size() );
27184 physicalDevices.resize( physicalDeviceCount );
27185 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
27186 }
27187#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27188
27189 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
27190 {
27191 return vkGetInstanceProcAddr( m_instance, pName );
27192 }
27193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27194 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27195 {
27196 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27197 }
27198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27199
27200#ifdef VK_USE_PLATFORM_ANDROID_KHR
27201 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27202 {
27203 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27204 }
27205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27206 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27207 {
27208 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027209 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 -070027210 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27211 }
27212#ifndef VULKAN_HPP_NO_SMART_HANDLE
27213 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27214 {
27215 SurfaceKHRDeleter deleter( *this, allocator );
27216 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27217 }
27218#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27219#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27220#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27221
27222 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27223 {
27224 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27225 }
27226#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27227 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27228 {
27229 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027230 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 -070027231 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27232 }
27233#ifndef VULKAN_HPP_NO_SMART_HANDLE
27234 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27235 {
27236 SurfaceKHRDeleter deleter( *this, allocator );
27237 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27238 }
27239#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27240#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27241
27242#ifdef VK_USE_PLATFORM_MIR_KHR
27243 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27244 {
27245 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27246 }
27247#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27248 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27249 {
27250 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027251 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 -070027252 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27253 }
27254#ifndef VULKAN_HPP_NO_SMART_HANDLE
27255 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27256 {
27257 SurfaceKHRDeleter deleter( *this, allocator );
27258 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27259 }
27260#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27262#endif /*VK_USE_PLATFORM_MIR_KHR*/
27263
27264 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27265 {
27266 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27267 }
27268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27269 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27270 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027271 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027272 }
27273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27274
27275#ifdef VK_USE_PLATFORM_VI_NN
27276 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27277 {
27278 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27279 }
27280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27281 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27282 {
27283 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027284 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 -070027285 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27286 }
27287#ifndef VULKAN_HPP_NO_SMART_HANDLE
27288 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27289 {
27290 SurfaceKHRDeleter deleter( *this, allocator );
27291 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27292 }
27293#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27295#endif /*VK_USE_PLATFORM_VI_NN*/
27296
27297#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27298 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27299 {
27300 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27301 }
27302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27303 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27304 {
27305 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027306 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 -070027307 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27308 }
27309#ifndef VULKAN_HPP_NO_SMART_HANDLE
27310 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27311 {
27312 SurfaceKHRDeleter deleter( *this, allocator );
27313 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27314 }
27315#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27317#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27318
27319#ifdef VK_USE_PLATFORM_WIN32_KHR
27320 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27321 {
27322 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27323 }
27324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27325 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27326 {
27327 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027328 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 -070027329 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27330 }
27331#ifndef VULKAN_HPP_NO_SMART_HANDLE
27332 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27333 {
27334 SurfaceKHRDeleter deleter( *this, allocator );
27335 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27336 }
27337#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27339#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27340
27341#ifdef VK_USE_PLATFORM_XLIB_KHR
27342 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27343 {
27344 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27345 }
27346#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27347 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27348 {
27349 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027350 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 -070027351 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27352 }
27353#ifndef VULKAN_HPP_NO_SMART_HANDLE
27354 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27355 {
27356 SurfaceKHRDeleter deleter( *this, allocator );
27357 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27358 }
27359#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27361#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27362
27363#ifdef VK_USE_PLATFORM_XCB_KHR
27364 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27365 {
27366 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27367 }
27368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27369 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27370 {
27371 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027372 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 -070027373 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27374 }
27375#ifndef VULKAN_HPP_NO_SMART_HANDLE
27376 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27377 {
27378 SurfaceKHRDeleter deleter( *this, allocator );
27379 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27380 }
27381#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27383#endif /*VK_USE_PLATFORM_XCB_KHR*/
27384
27385 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27386 {
27387 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27388 }
27389#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27390 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27391 {
27392 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027393 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 -070027394 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27395 }
27396#ifndef VULKAN_HPP_NO_SMART_HANDLE
27397 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27398 {
27399 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27400 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27401 }
27402#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27403#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27404
27405 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27406 {
27407 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27408 }
27409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27410 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27411 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027412 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027413 }
27414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27415
27416 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
27417 {
27418 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27419 }
27420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27421 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
27422 {
27423#ifdef VULKAN_HPP_NO_EXCEPTIONS
27424 assert( layerPrefix.size() == message.size() );
27425#else
27426 if ( layerPrefix.size() != message.size() )
27427 {
27428 throw std::logic_error( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
27429 }
27430#endif // VULKAN_HPP_NO_EXCEPTIONS
27431 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27432 }
27433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027434
27435 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027436 {
Mark Young0f183a82017-02-28 09:58:04 -070027437 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27438 }
27439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27440 template <typename Allocator>
27441 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27442 {
27443 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27444 uint32_t physicalDeviceGroupCount;
27445 Result result;
27446 do
27447 {
27448 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27449 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27450 {
27451 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27452 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27453 }
27454 } while ( result == Result::eIncomplete );
27455 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27456 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27457 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27458 }
27459#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27460
27461#ifdef VK_USE_PLATFORM_IOS_MVK
27462 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27463 {
27464 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27465 }
27466#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27467 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27468 {
27469 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027470 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 -070027471 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27472 }
27473#ifndef VULKAN_HPP_NO_SMART_HANDLE
27474 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27475 {
27476 SurfaceKHRDeleter deleter( *this, allocator );
27477 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27478 }
27479#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27481#endif /*VK_USE_PLATFORM_IOS_MVK*/
27482
27483#ifdef VK_USE_PLATFORM_MACOS_MVK
27484 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27485 {
27486 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27487 }
27488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27489 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27490 {
27491 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027492 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 -070027493 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27494 }
27495#ifndef VULKAN_HPP_NO_SMART_HANDLE
27496 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27497 {
27498 SurfaceKHRDeleter deleter( *this, allocator );
27499 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27500 }
27501#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27503#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027504
Mark Young0f183a82017-02-28 09:58:04 -070027505 struct DeviceGroupDeviceCreateInfoKHX
27506 {
27507 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27508 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027509 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027510 , physicalDeviceCount( physicalDeviceCount_ )
27511 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027512 {
27513 }
27514
Mark Young0f183a82017-02-28 09:58:04 -070027515 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027516 {
Mark Young0f183a82017-02-28 09:58:04 -070027517 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027518 }
27519
Mark Young0f183a82017-02-28 09:58:04 -070027520 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027521 {
Mark Young0f183a82017-02-28 09:58:04 -070027522 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027523 return *this;
27524 }
27525
Mark Young0f183a82017-02-28 09:58:04 -070027526 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027527 {
27528 pNext = pNext_;
27529 return *this;
27530 }
27531
Mark Young0f183a82017-02-28 09:58:04 -070027532 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027533 {
Mark Young0f183a82017-02-28 09:58:04 -070027534 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027535 return *this;
27536 }
27537
Mark Young0f183a82017-02-28 09:58:04 -070027538 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027539 {
Mark Young0f183a82017-02-28 09:58:04 -070027540 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027541 return *this;
27542 }
27543
Mark Young0f183a82017-02-28 09:58:04 -070027544 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027545 {
Mark Young0f183a82017-02-28 09:58:04 -070027546 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027547 }
27548
Mark Young0f183a82017-02-28 09:58:04 -070027549 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027550 {
27551 return ( sType == rhs.sType )
27552 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027553 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27554 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027555 }
27556
Mark Young0f183a82017-02-28 09:58:04 -070027557 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027558 {
27559 return !operator==( rhs );
27560 }
27561
27562 private:
27563 StructureType sType;
27564
27565 public:
27566 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027567 uint32_t physicalDeviceCount;
27568 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027569 };
Mark Young0f183a82017-02-28 09:58:04 -070027570 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027571
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027572#ifndef VULKAN_HPP_NO_SMART_HANDLE
27573 class InstanceDeleter;
27574 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27575#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27576
27577 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
27578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27579 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27580#ifndef VULKAN_HPP_NO_SMART_HANDLE
27581 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27582#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27584
27585#ifndef VULKAN_HPP_NO_SMART_HANDLE
27586 class InstanceDeleter
27587 {
27588 public:
27589 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27590 : m_allocator( allocator )
27591 {}
27592
27593 void operator()( Instance instance )
27594 {
27595 instance.destroy( m_allocator );
27596 }
27597
27598 private:
27599 Optional<const AllocationCallbacks> m_allocator;
27600 };
27601#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27602
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027603 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027604 {
27605 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27606 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027608 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027609 {
27610 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027611 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 -060027612 return createResultValue( result, instance, "vk::createInstance" );
27613 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027614#ifndef VULKAN_HPP_NO_SMART_HANDLE
27615 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27616 {
27617 InstanceDeleter deleter( allocator );
27618 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27619 }
27620#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027621#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27622
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027624 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027625 {
27626 return "(void)";
27627 }
27628
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027629 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027630 {
27631 return "{}";
27632 }
27633
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027634 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027635 {
27636 return "(void)";
27637 }
27638
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027639 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027640 {
27641 return "{}";
27642 }
27643
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027644 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027645 {
27646 return "(void)";
27647 }
27648
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027649 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027650 {
27651 return "{}";
27652 }
27653
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027654 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027655 {
27656 return "(void)";
27657 }
27658
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027659 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027660 {
27661 return "{}";
27662 }
27663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027664 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027665 {
27666 return "(void)";
27667 }
27668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027669 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027670 {
27671 return "{}";
27672 }
27673
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027674 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027675 {
27676 return "(void)";
27677 }
27678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027679 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027680 {
27681 return "{}";
27682 }
27683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027684 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027685 {
27686 return "(void)";
27687 }
27688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027689 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027690 {
27691 return "{}";
27692 }
27693
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027694 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027695 {
27696 return "(void)";
27697 }
27698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027699 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027700 {
27701 return "{}";
27702 }
27703
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027704 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027705 {
27706 return "(void)";
27707 }
27708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027709 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027710 {
27711 return "{}";
27712 }
27713
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027714 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027715 {
27716 return "(void)";
27717 }
27718
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027719 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027720 {
27721 return "{}";
27722 }
27723
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027724 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027725 {
27726 return "(void)";
27727 }
27728
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027729 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027730 {
27731 return "{}";
27732 }
27733
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027734 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027735 {
27736 return "(void)";
27737 }
27738
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027739 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027740 {
27741 return "{}";
27742 }
27743
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027744 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027745 {
27746 return "(void)";
27747 }
27748
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027749 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027750 {
27751 return "{}";
27752 }
27753
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027754 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027755 {
27756 return "(void)";
27757 }
27758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027759 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027760 {
27761 return "{}";
27762 }
27763
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027764 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027765 {
27766 return "(void)";
27767 }
27768
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027769 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027770 {
27771 return "{}";
27772 }
27773
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027774 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027775 {
27776 return "(void)";
27777 }
27778
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027779 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027780 {
27781 return "{}";
27782 }
27783
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027784 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027785 {
27786 return "(void)";
27787 }
27788
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027789 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027790 {
27791 return "{}";
27792 }
27793
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027794 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027795 {
27796 return "(void)";
27797 }
27798
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027799 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027800 {
27801 return "{}";
27802 }
27803
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027804 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027805 {
27806 return "(void)";
27807 }
27808
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027809 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027810 {
27811 return "{}";
27812 }
27813
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027814 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027815 {
27816 return "(void)";
27817 }
27818
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027819 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027820 {
27821 return "{}";
27822 }
27823
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027824 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027825 {
27826 return "(void)";
27827 }
27828
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027829 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027830 {
27831 return "{}";
27832 }
27833
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027834 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027835 {
27836 return "(void)";
27837 }
27838
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027839 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027840 {
27841 return "{}";
27842 }
27843
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027844 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
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(ShaderModuleCreateFlags)
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(EventCreateFlagBits)
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(EventCreateFlags)
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(MemoryMapFlagBits)
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(MemoryMapFlags)
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(DescriptorPoolResetFlagBits)
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(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027880 {
27881 return "{}";
27882 }
27883
Mark Young0f183a82017-02-28 09:58:04 -070027884 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027885 {
27886 return "(void)";
27887 }
27888
Mark Young0f183a82017-02-28 09:58:04 -070027889 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
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(DisplayModeCreateFlagBitsKHR)
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(DisplayModeCreateFlagsKHR)
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(DisplaySurfaceCreateFlagBitsKHR)
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(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027910 {
27911 return "{}";
27912 }
27913
27914#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027915 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027916 {
27917 return "(void)";
27918 }
27919#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27920
27921#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027922 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027923 {
27924 return "{}";
27925 }
27926#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27927
27928#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027929 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027930 {
27931 return "(void)";
27932 }
27933#endif /*VK_USE_PLATFORM_MIR_KHR*/
27934
27935#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027936 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027937 {
27938 return "{}";
27939 }
27940#endif /*VK_USE_PLATFORM_MIR_KHR*/
27941
Mark Young39389872017-01-19 21:10:49 -070027942#ifdef VK_USE_PLATFORM_VI_NN
27943 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
27944 {
27945 return "(void)";
27946 }
27947#endif /*VK_USE_PLATFORM_VI_NN*/
27948
27949#ifdef VK_USE_PLATFORM_VI_NN
27950 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
27951 {
27952 return "{}";
27953 }
27954#endif /*VK_USE_PLATFORM_VI_NN*/
27955
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027956#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027957 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027958 {
27959 return "(void)";
27960 }
27961#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27962
27963#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027964 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027965 {
27966 return "{}";
27967 }
27968#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27969
27970#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027971 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027972 {
27973 return "(void)";
27974 }
27975#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27976
27977#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027978 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027979 {
27980 return "{}";
27981 }
27982#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27983
27984#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027985 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027986 {
27987 return "(void)";
27988 }
27989#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27990
27991#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027992 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027993 {
27994 return "{}";
27995 }
27996#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27997
27998#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027999 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028000 {
28001 return "(void)";
28002 }
28003#endif /*VK_USE_PLATFORM_XCB_KHR*/
28004
28005#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028006 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028007 {
28008 return "{}";
28009 }
28010#endif /*VK_USE_PLATFORM_XCB_KHR*/
28011
Mark Young0f183a82017-02-28 09:58:04 -070028012#ifdef VK_USE_PLATFORM_IOS_MVK
28013 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
28014 {
28015 return "(void)";
28016 }
28017#endif /*VK_USE_PLATFORM_IOS_MVK*/
28018
28019#ifdef VK_USE_PLATFORM_IOS_MVK
28020 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
28021 {
28022 return "{}";
28023 }
28024#endif /*VK_USE_PLATFORM_IOS_MVK*/
28025
28026#ifdef VK_USE_PLATFORM_MACOS_MVK
28027 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
28028 {
28029 return "(void)";
28030 }
28031#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28032
28033#ifdef VK_USE_PLATFORM_MACOS_MVK
28034 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
28035 {
28036 return "{}";
28037 }
28038#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28039
Mark Young39389872017-01-19 21:10:49 -070028040 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
28041 {
28042 return "(void)";
28043 }
28044
28045 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
28046 {
28047 return "{}";
28048 }
28049
Mark Young0f183a82017-02-28 09:58:04 -070028050 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
28051 {
28052 return "(void)";
28053 }
28054
28055 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
28056 {
28057 return "{}";
28058 }
28059
28060 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
28061 {
28062 return "(void)";
28063 }
28064
28065 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
28066 {
28067 return "{}";
28068 }
28069
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028070 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028071 {
28072 switch (value)
28073 {
28074 case ImageLayout::eUndefined: return "Undefined";
28075 case ImageLayout::eGeneral: return "General";
28076 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
28077 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
28078 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
28079 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
28080 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
28081 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
28082 case ImageLayout::ePreinitialized: return "Preinitialized";
28083 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
28084 default: return "invalid";
28085 }
28086 }
28087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028088 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028089 {
28090 switch (value)
28091 {
28092 case AttachmentLoadOp::eLoad: return "Load";
28093 case AttachmentLoadOp::eClear: return "Clear";
28094 case AttachmentLoadOp::eDontCare: return "DontCare";
28095 default: return "invalid";
28096 }
28097 }
28098
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028099 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028100 {
28101 switch (value)
28102 {
28103 case AttachmentStoreOp::eStore: return "Store";
28104 case AttachmentStoreOp::eDontCare: return "DontCare";
28105 default: return "invalid";
28106 }
28107 }
28108
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028109 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028110 {
28111 switch (value)
28112 {
28113 case ImageType::e1D: return "1D";
28114 case ImageType::e2D: return "2D";
28115 case ImageType::e3D: return "3D";
28116 default: return "invalid";
28117 }
28118 }
28119
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028120 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028121 {
28122 switch (value)
28123 {
28124 case ImageTiling::eOptimal: return "Optimal";
28125 case ImageTiling::eLinear: return "Linear";
28126 default: return "invalid";
28127 }
28128 }
28129
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028130 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028131 {
28132 switch (value)
28133 {
28134 case ImageViewType::e1D: return "1D";
28135 case ImageViewType::e2D: return "2D";
28136 case ImageViewType::e3D: return "3D";
28137 case ImageViewType::eCube: return "Cube";
28138 case ImageViewType::e1DArray: return "1DArray";
28139 case ImageViewType::e2DArray: return "2DArray";
28140 case ImageViewType::eCubeArray: return "CubeArray";
28141 default: return "invalid";
28142 }
28143 }
28144
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028145 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028146 {
28147 switch (value)
28148 {
28149 case CommandBufferLevel::ePrimary: return "Primary";
28150 case CommandBufferLevel::eSecondary: return "Secondary";
28151 default: return "invalid";
28152 }
28153 }
28154
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028155 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028156 {
28157 switch (value)
28158 {
28159 case ComponentSwizzle::eIdentity: return "Identity";
28160 case ComponentSwizzle::eZero: return "Zero";
28161 case ComponentSwizzle::eOne: return "One";
28162 case ComponentSwizzle::eR: return "R";
28163 case ComponentSwizzle::eG: return "G";
28164 case ComponentSwizzle::eB: return "B";
28165 case ComponentSwizzle::eA: return "A";
28166 default: return "invalid";
28167 }
28168 }
28169
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028170 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028171 {
28172 switch (value)
28173 {
28174 case DescriptorType::eSampler: return "Sampler";
28175 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
28176 case DescriptorType::eSampledImage: return "SampledImage";
28177 case DescriptorType::eStorageImage: return "StorageImage";
28178 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
28179 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
28180 case DescriptorType::eUniformBuffer: return "UniformBuffer";
28181 case DescriptorType::eStorageBuffer: return "StorageBuffer";
28182 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
28183 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
28184 case DescriptorType::eInputAttachment: return "InputAttachment";
28185 default: return "invalid";
28186 }
28187 }
28188
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028189 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028190 {
28191 switch (value)
28192 {
28193 case QueryType::eOcclusion: return "Occlusion";
28194 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28195 case QueryType::eTimestamp: return "Timestamp";
28196 default: return "invalid";
28197 }
28198 }
28199
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028200 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028201 {
28202 switch (value)
28203 {
28204 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28205 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28206 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28207 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28208 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28209 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28210 default: return "invalid";
28211 }
28212 }
28213
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028214 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028215 {
28216 switch (value)
28217 {
28218 case PipelineBindPoint::eGraphics: return "Graphics";
28219 case PipelineBindPoint::eCompute: return "Compute";
28220 default: return "invalid";
28221 }
28222 }
28223
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028224 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028225 {
28226 switch (value)
28227 {
28228 case PipelineCacheHeaderVersion::eOne: return "One";
28229 default: return "invalid";
28230 }
28231 }
28232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028233 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028234 {
28235 switch (value)
28236 {
28237 case PrimitiveTopology::ePointList: return "PointList";
28238 case PrimitiveTopology::eLineList: return "LineList";
28239 case PrimitiveTopology::eLineStrip: return "LineStrip";
28240 case PrimitiveTopology::eTriangleList: return "TriangleList";
28241 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28242 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28243 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28244 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28245 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28246 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28247 case PrimitiveTopology::ePatchList: return "PatchList";
28248 default: return "invalid";
28249 }
28250 }
28251
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028252 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028253 {
28254 switch (value)
28255 {
28256 case SharingMode::eExclusive: return "Exclusive";
28257 case SharingMode::eConcurrent: return "Concurrent";
28258 default: return "invalid";
28259 }
28260 }
28261
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028262 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028263 {
28264 switch (value)
28265 {
28266 case IndexType::eUint16: return "Uint16";
28267 case IndexType::eUint32: return "Uint32";
28268 default: return "invalid";
28269 }
28270 }
28271
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028272 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028273 {
28274 switch (value)
28275 {
28276 case Filter::eNearest: return "Nearest";
28277 case Filter::eLinear: return "Linear";
28278 case Filter::eCubicIMG: return "CubicIMG";
28279 default: return "invalid";
28280 }
28281 }
28282
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028283 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028284 {
28285 switch (value)
28286 {
28287 case SamplerMipmapMode::eNearest: return "Nearest";
28288 case SamplerMipmapMode::eLinear: return "Linear";
28289 default: return "invalid";
28290 }
28291 }
28292
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028293 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028294 {
28295 switch (value)
28296 {
28297 case SamplerAddressMode::eRepeat: return "Repeat";
28298 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28299 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28300 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28301 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28302 default: return "invalid";
28303 }
28304 }
28305
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028306 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028307 {
28308 switch (value)
28309 {
28310 case CompareOp::eNever: return "Never";
28311 case CompareOp::eLess: return "Less";
28312 case CompareOp::eEqual: return "Equal";
28313 case CompareOp::eLessOrEqual: return "LessOrEqual";
28314 case CompareOp::eGreater: return "Greater";
28315 case CompareOp::eNotEqual: return "NotEqual";
28316 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28317 case CompareOp::eAlways: return "Always";
28318 default: return "invalid";
28319 }
28320 }
28321
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028322 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028323 {
28324 switch (value)
28325 {
28326 case PolygonMode::eFill: return "Fill";
28327 case PolygonMode::eLine: return "Line";
28328 case PolygonMode::ePoint: return "Point";
28329 default: return "invalid";
28330 }
28331 }
28332
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028333 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028334 {
28335 switch (value)
28336 {
28337 case CullModeFlagBits::eNone: return "None";
28338 case CullModeFlagBits::eFront: return "Front";
28339 case CullModeFlagBits::eBack: return "Back";
28340 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28341 default: return "invalid";
28342 }
28343 }
28344
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028345 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028346 {
28347 if (!value) return "{}";
28348 std::string result;
28349 if (value & CullModeFlagBits::eNone) result += "None | ";
28350 if (value & CullModeFlagBits::eFront) result += "Front | ";
28351 if (value & CullModeFlagBits::eBack) result += "Back | ";
28352 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28353 return "{" + result.substr(0, result.size() - 3) + "}";
28354 }
28355
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028356 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028357 {
28358 switch (value)
28359 {
28360 case FrontFace::eCounterClockwise: return "CounterClockwise";
28361 case FrontFace::eClockwise: return "Clockwise";
28362 default: return "invalid";
28363 }
28364 }
28365
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028366 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028367 {
28368 switch (value)
28369 {
28370 case BlendFactor::eZero: return "Zero";
28371 case BlendFactor::eOne: return "One";
28372 case BlendFactor::eSrcColor: return "SrcColor";
28373 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28374 case BlendFactor::eDstColor: return "DstColor";
28375 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28376 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28377 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28378 case BlendFactor::eDstAlpha: return "DstAlpha";
28379 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28380 case BlendFactor::eConstantColor: return "ConstantColor";
28381 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28382 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28383 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28384 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28385 case BlendFactor::eSrc1Color: return "Src1Color";
28386 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28387 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28388 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28389 default: return "invalid";
28390 }
28391 }
28392
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028393 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028394 {
28395 switch (value)
28396 {
28397 case BlendOp::eAdd: return "Add";
28398 case BlendOp::eSubtract: return "Subtract";
28399 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28400 case BlendOp::eMin: return "Min";
28401 case BlendOp::eMax: return "Max";
28402 default: return "invalid";
28403 }
28404 }
28405
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028406 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028407 {
28408 switch (value)
28409 {
28410 case StencilOp::eKeep: return "Keep";
28411 case StencilOp::eZero: return "Zero";
28412 case StencilOp::eReplace: return "Replace";
28413 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28414 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28415 case StencilOp::eInvert: return "Invert";
28416 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28417 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28418 default: return "invalid";
28419 }
28420 }
28421
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028422 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028423 {
28424 switch (value)
28425 {
28426 case LogicOp::eClear: return "Clear";
28427 case LogicOp::eAnd: return "And";
28428 case LogicOp::eAndReverse: return "AndReverse";
28429 case LogicOp::eCopy: return "Copy";
28430 case LogicOp::eAndInverted: return "AndInverted";
28431 case LogicOp::eNoOp: return "NoOp";
28432 case LogicOp::eXor: return "Xor";
28433 case LogicOp::eOr: return "Or";
28434 case LogicOp::eNor: return "Nor";
28435 case LogicOp::eEquivalent: return "Equivalent";
28436 case LogicOp::eInvert: return "Invert";
28437 case LogicOp::eOrReverse: return "OrReverse";
28438 case LogicOp::eCopyInverted: return "CopyInverted";
28439 case LogicOp::eOrInverted: return "OrInverted";
28440 case LogicOp::eNand: return "Nand";
28441 case LogicOp::eSet: return "Set";
28442 default: return "invalid";
28443 }
28444 }
28445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028446 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028447 {
28448 switch (value)
28449 {
28450 case InternalAllocationType::eExecutable: return "Executable";
28451 default: return "invalid";
28452 }
28453 }
28454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028455 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028456 {
28457 switch (value)
28458 {
28459 case SystemAllocationScope::eCommand: return "Command";
28460 case SystemAllocationScope::eObject: return "Object";
28461 case SystemAllocationScope::eCache: return "Cache";
28462 case SystemAllocationScope::eDevice: return "Device";
28463 case SystemAllocationScope::eInstance: return "Instance";
28464 default: return "invalid";
28465 }
28466 }
28467
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028468 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028469 {
28470 switch (value)
28471 {
28472 case PhysicalDeviceType::eOther: return "Other";
28473 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28474 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28475 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28476 case PhysicalDeviceType::eCpu: return "Cpu";
28477 default: return "invalid";
28478 }
28479 }
28480
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028481 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028482 {
28483 switch (value)
28484 {
28485 case VertexInputRate::eVertex: return "Vertex";
28486 case VertexInputRate::eInstance: return "Instance";
28487 default: return "invalid";
28488 }
28489 }
28490
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028491 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028492 {
28493 switch (value)
28494 {
28495 case Format::eUndefined: return "Undefined";
28496 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28497 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28498 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28499 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28500 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28501 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28502 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28503 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28504 case Format::eR8Unorm: return "R8Unorm";
28505 case Format::eR8Snorm: return "R8Snorm";
28506 case Format::eR8Uscaled: return "R8Uscaled";
28507 case Format::eR8Sscaled: return "R8Sscaled";
28508 case Format::eR8Uint: return "R8Uint";
28509 case Format::eR8Sint: return "R8Sint";
28510 case Format::eR8Srgb: return "R8Srgb";
28511 case Format::eR8G8Unorm: return "R8G8Unorm";
28512 case Format::eR8G8Snorm: return "R8G8Snorm";
28513 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28514 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28515 case Format::eR8G8Uint: return "R8G8Uint";
28516 case Format::eR8G8Sint: return "R8G8Sint";
28517 case Format::eR8G8Srgb: return "R8G8Srgb";
28518 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28519 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28520 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28521 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28522 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28523 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28524 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28525 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28526 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28527 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28528 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28529 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28530 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28531 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28532 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28533 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28534 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28535 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28536 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28537 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28538 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28539 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28540 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28541 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28542 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28543 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28544 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28545 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28546 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28547 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28548 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28549 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28550 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28551 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28552 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28553 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28554 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28555 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28556 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28557 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28558 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28559 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28560 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28561 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28562 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28563 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28564 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28565 case Format::eR16Unorm: return "R16Unorm";
28566 case Format::eR16Snorm: return "R16Snorm";
28567 case Format::eR16Uscaled: return "R16Uscaled";
28568 case Format::eR16Sscaled: return "R16Sscaled";
28569 case Format::eR16Uint: return "R16Uint";
28570 case Format::eR16Sint: return "R16Sint";
28571 case Format::eR16Sfloat: return "R16Sfloat";
28572 case Format::eR16G16Unorm: return "R16G16Unorm";
28573 case Format::eR16G16Snorm: return "R16G16Snorm";
28574 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28575 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28576 case Format::eR16G16Uint: return "R16G16Uint";
28577 case Format::eR16G16Sint: return "R16G16Sint";
28578 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28579 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28580 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28581 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28582 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28583 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28584 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28585 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28586 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28587 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28588 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28589 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28590 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28591 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28592 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28593 case Format::eR32Uint: return "R32Uint";
28594 case Format::eR32Sint: return "R32Sint";
28595 case Format::eR32Sfloat: return "R32Sfloat";
28596 case Format::eR32G32Uint: return "R32G32Uint";
28597 case Format::eR32G32Sint: return "R32G32Sint";
28598 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28599 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28600 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28601 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28602 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28603 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28604 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28605 case Format::eR64Uint: return "R64Uint";
28606 case Format::eR64Sint: return "R64Sint";
28607 case Format::eR64Sfloat: return "R64Sfloat";
28608 case Format::eR64G64Uint: return "R64G64Uint";
28609 case Format::eR64G64Sint: return "R64G64Sint";
28610 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28611 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28612 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28613 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28614 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28615 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28616 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28617 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28618 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28619 case Format::eD16Unorm: return "D16Unorm";
28620 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28621 case Format::eD32Sfloat: return "D32Sfloat";
28622 case Format::eS8Uint: return "S8Uint";
28623 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28624 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28625 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28626 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28627 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28628 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28629 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28630 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28631 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28632 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28633 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28634 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28635 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28636 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28637 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28638 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28639 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28640 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28641 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28642 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28643 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28644 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28645 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28646 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28647 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28648 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28649 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28650 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28651 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28652 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28653 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28654 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28655 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28656 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28657 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28658 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28659 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28660 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28661 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28662 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28663 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28664 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28665 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28666 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28667 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28668 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28669 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28670 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28671 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28672 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28673 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28674 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28675 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28676 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28677 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28678 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28679 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028680 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28681 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28682 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28683 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28684 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28685 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28686 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28687 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028688 default: return "invalid";
28689 }
28690 }
28691
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028692 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028693 {
28694 switch (value)
28695 {
28696 case StructureType::eApplicationInfo: return "ApplicationInfo";
28697 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28698 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28699 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28700 case StructureType::eSubmitInfo: return "SubmitInfo";
28701 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28702 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28703 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28704 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28705 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28706 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28707 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28708 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28709 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28710 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28711 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28712 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28713 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28714 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28715 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28716 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28717 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28718 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28719 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28720 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28721 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28722 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28723 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28724 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28725 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28726 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28727 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28728 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28729 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28730 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28731 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28732 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28733 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28734 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28735 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28736 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28737 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28738 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28739 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28740 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28741 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28742 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28743 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28744 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28745 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
28746 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
28747 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
28748 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
28749 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
28750 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
28751 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
28752 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
28753 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
28754 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
28755 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
28756 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
28757 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
28758 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
28759 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
28760 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
28761 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
28762 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
28763 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Young0f183a82017-02-28 09:58:04 -070028764 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
28765 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
28766 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060028767 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
28768 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
28769 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
28770 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
28771 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028772 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
28773 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
28774 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
28775 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
28776 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
28777 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
28778 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
28779 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
28780 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070028781 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
28782 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
28783 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
28784 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
28785 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
28786 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
28787 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
28788 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
28789 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
28790 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
28791 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
28792 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
28793 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060028794 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070028795 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070028796 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
28797 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
28798 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
28799 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
28800 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
28801 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
28802 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Young0f183a82017-02-28 09:58:04 -070028803 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
28804 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
28805 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
28806 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
28807 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
28808 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
28809 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
28810 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
28811 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
28812 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
28813 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
28814 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
28815 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
28816 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
28817 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
28818 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
28819 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060028820 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070028821 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028822 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
28823 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
28824 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
28825 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
28826 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
28827 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070028828 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028829 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
28830 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
28831 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
28832 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
28833 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028834 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070028835 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
28836 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
28837 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
28838 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028839 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Young0f183a82017-02-28 09:58:04 -070028840 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
28841 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028842 default: return "invalid";
28843 }
28844 }
28845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028846 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028847 {
28848 switch (value)
28849 {
28850 case SubpassContents::eInline: return "Inline";
28851 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
28852 default: return "invalid";
28853 }
28854 }
28855
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028856 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028857 {
28858 switch (value)
28859 {
28860 case DynamicState::eViewport: return "Viewport";
28861 case DynamicState::eScissor: return "Scissor";
28862 case DynamicState::eLineWidth: return "LineWidth";
28863 case DynamicState::eDepthBias: return "DepthBias";
28864 case DynamicState::eBlendConstants: return "BlendConstants";
28865 case DynamicState::eDepthBounds: return "DepthBounds";
28866 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
28867 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
28868 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070028869 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
28870 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
28871 default: return "invalid";
28872 }
28873 }
28874
28875 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
28876 {
28877 switch (value)
28878 {
28879 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
28880 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028881 default: return "invalid";
28882 }
28883 }
28884
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028885 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028886 {
28887 switch (value)
28888 {
28889 case QueueFlagBits::eGraphics: return "Graphics";
28890 case QueueFlagBits::eCompute: return "Compute";
28891 case QueueFlagBits::eTransfer: return "Transfer";
28892 case QueueFlagBits::eSparseBinding: return "SparseBinding";
28893 default: return "invalid";
28894 }
28895 }
28896
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028897 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028898 {
28899 if (!value) return "{}";
28900 std::string result;
28901 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
28902 if (value & QueueFlagBits::eCompute) result += "Compute | ";
28903 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
28904 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
28905 return "{" + result.substr(0, result.size() - 3) + "}";
28906 }
28907
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028908 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028909 {
28910 switch (value)
28911 {
28912 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
28913 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
28914 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
28915 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
28916 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
28917 default: return "invalid";
28918 }
28919 }
28920
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028921 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028922 {
28923 if (!value) return "{}";
28924 std::string result;
28925 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
28926 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
28927 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
28928 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
28929 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
28930 return "{" + result.substr(0, result.size() - 3) + "}";
28931 }
28932
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028933 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028934 {
28935 switch (value)
28936 {
28937 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070028938 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028939 default: return "invalid";
28940 }
28941 }
28942
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028943 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028944 {
28945 if (!value) return "{}";
28946 std::string result;
28947 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070028948 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028949 return "{" + result.substr(0, result.size() - 3) + "}";
28950 }
28951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028952 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028953 {
28954 switch (value)
28955 {
28956 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
28957 case AccessFlagBits::eIndexRead: return "IndexRead";
28958 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
28959 case AccessFlagBits::eUniformRead: return "UniformRead";
28960 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
28961 case AccessFlagBits::eShaderRead: return "ShaderRead";
28962 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
28963 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
28964 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
28965 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
28966 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
28967 case AccessFlagBits::eTransferRead: return "TransferRead";
28968 case AccessFlagBits::eTransferWrite: return "TransferWrite";
28969 case AccessFlagBits::eHostRead: return "HostRead";
28970 case AccessFlagBits::eHostWrite: return "HostWrite";
28971 case AccessFlagBits::eMemoryRead: return "MemoryRead";
28972 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028973 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
28974 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028975 default: return "invalid";
28976 }
28977 }
28978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028979 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028980 {
28981 if (!value) return "{}";
28982 std::string result;
28983 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
28984 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
28985 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
28986 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
28987 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
28988 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
28989 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
28990 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
28991 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
28992 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
28993 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
28994 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
28995 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
28996 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
28997 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
28998 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
28999 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029000 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
29001 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029002 return "{" + result.substr(0, result.size() - 3) + "}";
29003 }
29004
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029005 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029006 {
29007 switch (value)
29008 {
29009 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
29010 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
29011 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29012 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29013 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
29014 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
29015 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
29016 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
29017 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
29018 default: return "invalid";
29019 }
29020 }
29021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029022 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029023 {
29024 if (!value) return "{}";
29025 std::string result;
29026 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29027 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
29028 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29029 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29030 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
29031 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
29032 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
29033 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29034 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
29035 return "{" + result.substr(0, result.size() - 3) + "}";
29036 }
29037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029038 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029039 {
29040 switch (value)
29041 {
29042 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
29043 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
29044 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
29045 default: return "invalid";
29046 }
29047 }
29048
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029049 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029050 {
29051 if (!value) return "{}";
29052 std::string result;
29053 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29054 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29055 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29056 return "{" + result.substr(0, result.size() - 3) + "}";
29057 }
29058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029059 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029060 {
29061 switch (value)
29062 {
29063 case ShaderStageFlagBits::eVertex: return "Vertex";
29064 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
29065 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
29066 case ShaderStageFlagBits::eGeometry: return "Geometry";
29067 case ShaderStageFlagBits::eFragment: return "Fragment";
29068 case ShaderStageFlagBits::eCompute: return "Compute";
29069 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
29070 case ShaderStageFlagBits::eAll: return "All";
29071 default: return "invalid";
29072 }
29073 }
29074
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029075 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029076 {
29077 if (!value) return "{}";
29078 std::string result;
29079 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
29080 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
29081 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
29082 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
29083 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
29084 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
29085 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29086 if (value & ShaderStageFlagBits::eAll) result += "All | ";
29087 return "{" + result.substr(0, result.size() - 3) + "}";
29088 }
29089
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029090 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029091 {
29092 switch (value)
29093 {
29094 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
29095 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
29096 case ImageUsageFlagBits::eSampled: return "Sampled";
29097 case ImageUsageFlagBits::eStorage: return "Storage";
29098 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
29099 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29100 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
29101 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
29102 default: return "invalid";
29103 }
29104 }
29105
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029106 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029107 {
29108 if (!value) return "{}";
29109 std::string result;
29110 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29111 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
29112 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
29113 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
29114 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
29115 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29116 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
29117 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
29118 return "{" + result.substr(0, result.size() - 3) + "}";
29119 }
29120
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029121 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029122 {
29123 switch (value)
29124 {
29125 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
29126 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
29127 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
29128 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
29129 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070029130 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070029131 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029132 default: return "invalid";
29133 }
29134 }
29135
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029136 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029137 {
29138 if (!value) return "{}";
29139 std::string result;
29140 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29141 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29142 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29143 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
29144 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070029145 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070029146 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029147 return "{" + result.substr(0, result.size() - 3) + "}";
29148 }
29149
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029150 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029151 {
29152 switch (value)
29153 {
29154 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
29155 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
29156 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070029157 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
29158 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029159 default: return "invalid";
29160 }
29161 }
29162
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029163 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029164 {
29165 if (!value) return "{}";
29166 std::string result;
29167 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
29168 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
29169 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070029170 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
29171 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029172 return "{" + result.substr(0, result.size() - 3) + "}";
29173 }
29174
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029175 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029176 {
29177 switch (value)
29178 {
29179 case ColorComponentFlagBits::eR: return "R";
29180 case ColorComponentFlagBits::eG: return "G";
29181 case ColorComponentFlagBits::eB: return "B";
29182 case ColorComponentFlagBits::eA: return "A";
29183 default: return "invalid";
29184 }
29185 }
29186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029187 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029188 {
29189 if (!value) return "{}";
29190 std::string result;
29191 if (value & ColorComponentFlagBits::eR) result += "R | ";
29192 if (value & ColorComponentFlagBits::eG) result += "G | ";
29193 if (value & ColorComponentFlagBits::eB) result += "B | ";
29194 if (value & ColorComponentFlagBits::eA) result += "A | ";
29195 return "{" + result.substr(0, result.size() - 3) + "}";
29196 }
29197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029198 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029199 {
29200 switch (value)
29201 {
29202 case FenceCreateFlagBits::eSignaled: return "Signaled";
29203 default: return "invalid";
29204 }
29205 }
29206
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029207 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029208 {
29209 if (!value) return "{}";
29210 std::string result;
29211 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29212 return "{" + result.substr(0, result.size() - 3) + "}";
29213 }
29214
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029215 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029216 {
29217 switch (value)
29218 {
29219 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29220 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29221 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29222 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29223 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29224 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29225 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29226 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29227 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29228 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29229 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29230 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29231 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29232 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029233 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29234 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029235 default: return "invalid";
29236 }
29237 }
29238
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029239 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029240 {
29241 if (!value) return "{}";
29242 std::string result;
29243 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29244 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29245 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29246 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29247 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29248 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29249 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29250 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29251 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29252 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29253 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29254 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29255 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29256 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029257 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29258 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029259 return "{" + result.substr(0, result.size() - 3) + "}";
29260 }
29261
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029262 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029263 {
29264 switch (value)
29265 {
29266 case QueryControlFlagBits::ePrecise: return "Precise";
29267 default: return "invalid";
29268 }
29269 }
29270
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029271 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029272 {
29273 if (!value) return "{}";
29274 std::string result;
29275 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29276 return "{" + result.substr(0, result.size() - 3) + "}";
29277 }
29278
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029279 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029280 {
29281 switch (value)
29282 {
29283 case QueryResultFlagBits::e64: return "64";
29284 case QueryResultFlagBits::eWait: return "Wait";
29285 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29286 case QueryResultFlagBits::ePartial: return "Partial";
29287 default: return "invalid";
29288 }
29289 }
29290
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029291 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029292 {
29293 if (!value) return "{}";
29294 std::string result;
29295 if (value & QueryResultFlagBits::e64) result += "64 | ";
29296 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29297 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29298 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29299 return "{" + result.substr(0, result.size() - 3) + "}";
29300 }
29301
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029302 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029303 {
29304 switch (value)
29305 {
29306 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29307 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29308 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29309 default: return "invalid";
29310 }
29311 }
29312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029313 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029314 {
29315 if (!value) return "{}";
29316 std::string result;
29317 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29318 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29319 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29320 return "{" + result.substr(0, result.size() - 3) + "}";
29321 }
29322
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029323 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029324 {
29325 switch (value)
29326 {
29327 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29328 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29329 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29330 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29331 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29332 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29333 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29334 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29335 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29336 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29337 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29338 default: return "invalid";
29339 }
29340 }
29341
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029342 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029343 {
29344 if (!value) return "{}";
29345 std::string result;
29346 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29347 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29348 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29349 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29350 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29351 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29352 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29353 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29354 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29355 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29356 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29357 return "{" + result.substr(0, result.size() - 3) + "}";
29358 }
29359
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029360 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029361 {
29362 switch (value)
29363 {
29364 case ImageAspectFlagBits::eColor: return "Color";
29365 case ImageAspectFlagBits::eDepth: return "Depth";
29366 case ImageAspectFlagBits::eStencil: return "Stencil";
29367 case ImageAspectFlagBits::eMetadata: return "Metadata";
29368 default: return "invalid";
29369 }
29370 }
29371
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029372 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029373 {
29374 if (!value) return "{}";
29375 std::string result;
29376 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29377 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29378 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29379 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29380 return "{" + result.substr(0, result.size() - 3) + "}";
29381 }
29382
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029383 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029384 {
29385 switch (value)
29386 {
29387 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29388 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29389 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29390 default: return "invalid";
29391 }
29392 }
29393
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029394 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029395 {
29396 if (!value) return "{}";
29397 std::string result;
29398 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29399 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29400 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29401 return "{" + result.substr(0, result.size() - 3) + "}";
29402 }
29403
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029404 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029405 {
29406 switch (value)
29407 {
29408 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29409 default: return "invalid";
29410 }
29411 }
29412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029413 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029414 {
29415 if (!value) return "{}";
29416 std::string result;
29417 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29418 return "{" + result.substr(0, result.size() - 3) + "}";
29419 }
29420
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029421 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029422 {
29423 switch (value)
29424 {
29425 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29426 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29427 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29428 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29429 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29430 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29431 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29432 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29433 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29434 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29435 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29436 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29437 case PipelineStageFlagBits::eTransfer: return "Transfer";
29438 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29439 case PipelineStageFlagBits::eHost: return "Host";
29440 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29441 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029442 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029443 default: return "invalid";
29444 }
29445 }
29446
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029447 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029448 {
29449 if (!value) return "{}";
29450 std::string result;
29451 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29452 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29453 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29454 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29455 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29456 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29457 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29458 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29459 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29460 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29461 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29462 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29463 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29464 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29465 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29466 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29467 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029468 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029469 return "{" + result.substr(0, result.size() - 3) + "}";
29470 }
29471
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029472 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029473 {
29474 switch (value)
29475 {
29476 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29477 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29478 default: return "invalid";
29479 }
29480 }
29481
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029482 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029483 {
29484 if (!value) return "{}";
29485 std::string result;
29486 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29487 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29488 return "{" + result.substr(0, result.size() - 3) + "}";
29489 }
29490
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029491 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029492 {
29493 switch (value)
29494 {
29495 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29496 default: return "invalid";
29497 }
29498 }
29499
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029500 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029501 {
29502 if (!value) return "{}";
29503 std::string result;
29504 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29505 return "{" + result.substr(0, result.size() - 3) + "}";
29506 }
29507
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029508 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029509 {
29510 switch (value)
29511 {
29512 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29513 default: return "invalid";
29514 }
29515 }
29516
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029517 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029518 {
29519 if (!value) return "{}";
29520 std::string result;
29521 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29522 return "{" + result.substr(0, result.size() - 3) + "}";
29523 }
29524
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029525 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029526 {
29527 switch (value)
29528 {
29529 case SampleCountFlagBits::e1: return "1";
29530 case SampleCountFlagBits::e2: return "2";
29531 case SampleCountFlagBits::e4: return "4";
29532 case SampleCountFlagBits::e8: return "8";
29533 case SampleCountFlagBits::e16: return "16";
29534 case SampleCountFlagBits::e32: return "32";
29535 case SampleCountFlagBits::e64: return "64";
29536 default: return "invalid";
29537 }
29538 }
29539
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029540 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029541 {
29542 if (!value) return "{}";
29543 std::string result;
29544 if (value & SampleCountFlagBits::e1) result += "1 | ";
29545 if (value & SampleCountFlagBits::e2) result += "2 | ";
29546 if (value & SampleCountFlagBits::e4) result += "4 | ";
29547 if (value & SampleCountFlagBits::e8) result += "8 | ";
29548 if (value & SampleCountFlagBits::e16) result += "16 | ";
29549 if (value & SampleCountFlagBits::e32) result += "32 | ";
29550 if (value & SampleCountFlagBits::e64) result += "64 | ";
29551 return "{" + result.substr(0, result.size() - 3) + "}";
29552 }
29553
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029554 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029555 {
29556 switch (value)
29557 {
29558 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29559 default: return "invalid";
29560 }
29561 }
29562
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029563 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029564 {
29565 if (!value) return "{}";
29566 std::string result;
29567 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29568 return "{" + result.substr(0, result.size() - 3) + "}";
29569 }
29570
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029571 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029572 {
29573 switch (value)
29574 {
29575 case StencilFaceFlagBits::eFront: return "Front";
29576 case StencilFaceFlagBits::eBack: return "Back";
29577 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29578 default: return "invalid";
29579 }
29580 }
29581
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029582 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029583 {
29584 if (!value) return "{}";
29585 std::string result;
29586 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29587 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29588 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29589 return "{" + result.substr(0, result.size() - 3) + "}";
29590 }
29591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029592 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029593 {
29594 switch (value)
29595 {
29596 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29597 default: return "invalid";
29598 }
29599 }
29600
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029601 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029602 {
29603 if (!value) return "{}";
29604 std::string result;
29605 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29606 return "{" + result.substr(0, result.size() - 3) + "}";
29607 }
29608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029609 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029610 {
29611 switch (value)
29612 {
29613 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029614 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29615 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029616 default: return "invalid";
29617 }
29618 }
29619
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029620 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029621 {
29622 if (!value) return "{}";
29623 std::string result;
29624 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029625 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29626 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029627 return "{" + result.substr(0, result.size() - 3) + "}";
29628 }
29629
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029630 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029631 {
29632 switch (value)
29633 {
29634 case PresentModeKHR::eImmediate: return "Immediate";
29635 case PresentModeKHR::eMailbox: return "Mailbox";
29636 case PresentModeKHR::eFifo: return "Fifo";
29637 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
29638 default: return "invalid";
29639 }
29640 }
29641
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029642 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029643 {
29644 switch (value)
29645 {
29646 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029647 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
29648 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
29649 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
29650 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
29651 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
29652 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
29653 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
29654 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
29655 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
29656 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
29657 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
29658 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
29659 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029660 default: return "invalid";
29661 }
29662 }
29663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029664 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029665 {
29666 switch (value)
29667 {
29668 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29669 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29670 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29671 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29672 default: return "invalid";
29673 }
29674 }
29675
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029676 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029677 {
29678 if (!value) return "{}";
29679 std::string result;
29680 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29681 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29682 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29683 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29684 return "{" + result.substr(0, result.size() - 3) + "}";
29685 }
29686
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029687 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029688 {
29689 switch (value)
29690 {
29691 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29692 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29693 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29694 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29695 default: return "invalid";
29696 }
29697 }
29698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029699 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029700 {
29701 if (!value) return "{}";
29702 std::string result;
29703 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29704 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
29705 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
29706 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
29707 return "{" + result.substr(0, result.size() - 3) + "}";
29708 }
29709
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029710 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029711 {
29712 switch (value)
29713 {
29714 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
29715 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
29716 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
29717 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
29718 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
29719 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
29720 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
29721 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
29722 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
29723 default: return "invalid";
29724 }
29725 }
29726
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029727 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029728 {
29729 if (!value) return "{}";
29730 std::string result;
29731 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
29732 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
29733 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
29734 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
29735 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
29736 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
29737 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
29738 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
29739 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
29740 return "{" + result.substr(0, result.size() - 3) + "}";
29741 }
29742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029743 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029744 {
29745 switch (value)
29746 {
29747 case DebugReportFlagBitsEXT::eInformation: return "Information";
29748 case DebugReportFlagBitsEXT::eWarning: return "Warning";
29749 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
29750 case DebugReportFlagBitsEXT::eError: return "Error";
29751 case DebugReportFlagBitsEXT::eDebug: return "Debug";
29752 default: return "invalid";
29753 }
29754 }
29755
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029756 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029757 {
29758 if (!value) return "{}";
29759 std::string result;
29760 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
29761 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
29762 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
29763 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
29764 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
29765 return "{" + result.substr(0, result.size() - 3) + "}";
29766 }
29767
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029768 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029769 {
29770 switch (value)
29771 {
29772 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
29773 case DebugReportObjectTypeEXT::eInstance: return "Instance";
29774 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
29775 case DebugReportObjectTypeEXT::eDevice: return "Device";
29776 case DebugReportObjectTypeEXT::eQueue: return "Queue";
29777 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
29778 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
29779 case DebugReportObjectTypeEXT::eFence: return "Fence";
29780 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
29781 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
29782 case DebugReportObjectTypeEXT::eImage: return "Image";
29783 case DebugReportObjectTypeEXT::eEvent: return "Event";
29784 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
29785 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
29786 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
29787 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
29788 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
29789 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
29790 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
29791 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
29792 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
29793 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
29794 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
29795 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
29796 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
29797 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
29798 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
29799 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
29800 case DebugReportObjectTypeEXT::eDebugReport: return "DebugReport";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029801 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
29802 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
29803 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
29804 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060029805 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKhrKHR: return "DescriptorUpdateTemplateKhrKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029806 default: return "invalid";
29807 }
29808 }
29809
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029810 VULKAN_HPP_INLINE std::string to_string(DebugReportErrorEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029811 {
29812 switch (value)
29813 {
29814 case DebugReportErrorEXT::eNone: return "None";
29815 case DebugReportErrorEXT::eCallbackRef: return "CallbackRef";
29816 default: return "invalid";
29817 }
29818 }
29819
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029820 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029821 {
29822 switch (value)
29823 {
29824 case RasterizationOrderAMD::eStrict: return "Strict";
29825 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
29826 default: return "invalid";
29827 }
29828 }
29829
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029830 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029831 {
29832 switch (value)
29833 {
29834 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
29835 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29836 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
29837 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
29838 default: return "invalid";
29839 }
29840 }
29841
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029842 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029843 {
29844 if (!value) return "{}";
29845 std::string result;
29846 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
29847 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29848 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
29849 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
29850 return "{" + result.substr(0, result.size() - 3) + "}";
29851 }
29852
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029853 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029854 {
29855 switch (value)
29856 {
29857 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
29858 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
29859 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
29860 default: return "invalid";
29861 }
29862 }
29863
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029864 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029865 {
29866 if (!value) return "{}";
29867 std::string result;
29868 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
29869 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
29870 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
29871 return "{" + result.substr(0, result.size() - 3) + "}";
29872 }
29873
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029874 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060029875 {
29876 switch (value)
29877 {
29878 case ValidationCheckEXT::eAll: return "All";
29879 default: return "invalid";
29880 }
29881 }
29882
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029883 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
29884 {
29885 switch (value)
29886 {
29887 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
29888 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
29889 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
29890 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
29891 default: return "invalid";
29892 }
29893 }
29894
29895 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
29896 {
29897 if (!value) return "{}";
29898 std::string result;
29899 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
29900 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
29901 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
29902 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
29903 return "{" + result.substr(0, result.size() - 3) + "}";
29904 }
29905
29906 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
29907 {
29908 switch (value)
29909 {
29910 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
29911 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
29912 default: return "invalid";
29913 }
29914 }
29915
29916 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
29917 {
29918 if (!value) return "{}";
29919 std::string result;
29920 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
29921 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
29922 return "{" + result.substr(0, result.size() - 3) + "}";
29923 }
29924
29925 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
29926 {
29927 switch (value)
29928 {
29929 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline: return "VkIndirectCommandsTokenPipeline";
29930 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDescriptorSet: return "VkIndirectCommandsTokenDescriptorSet";
29931 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenIndexBuffer: return "VkIndirectCommandsTokenIndexBuffer";
29932 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenVertexBuffer: return "VkIndirectCommandsTokenVertexBuffer";
29933 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPushConstant: return "VkIndirectCommandsTokenPushConstant";
29934 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDrawIndexed: return "VkIndirectCommandsTokenDrawIndexed";
29935 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDraw: return "VkIndirectCommandsTokenDraw";
29936 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDispatch: return "VkIndirectCommandsTokenDispatch";
29937 default: return "invalid";
29938 }
29939 }
29940
29941 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
29942 {
29943 switch (value)
29944 {
29945 case ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet: return "VkObjectEntryDescriptorSet";
29946 case ObjectEntryTypeNVX::eVkObjectEntryPipeline: return "VkObjectEntryPipeline";
29947 case ObjectEntryTypeNVX::eVkObjectEntryIndexBuffer: return "VkObjectEntryIndexBuffer";
29948 case ObjectEntryTypeNVX::eVkObjectEntryVertexBuffer: return "VkObjectEntryVertexBuffer";
29949 case ObjectEntryTypeNVX::eVkObjectEntryPushConstant: return "VkObjectEntryPushConstant";
29950 default: return "invalid";
29951 }
29952 }
29953
Mark Young0f183a82017-02-28 09:58:04 -070029954 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
29955 {
29956 switch (value)
29957 {
29958 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
29959 default: return "invalid";
29960 }
29961 }
29962
29963 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
29964 {
29965 if (!value) return "{}";
29966 std::string result;
29967 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
29968 return "{" + result.substr(0, result.size() - 3) + "}";
29969 }
29970
29971 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
29972 {
29973 switch (value)
29974 {
29975 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29976 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29977 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29978 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
29979 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
29980 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
29981 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
29982 default: return "invalid";
29983 }
29984 }
29985
29986 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
29987 {
29988 if (!value) return "{}";
29989 std::string result;
29990 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29991 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29992 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29993 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
29994 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
29995 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
29996 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
29997 return "{" + result.substr(0, result.size() - 3) + "}";
29998 }
29999
30000 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
30001 {
30002 switch (value)
30003 {
30004 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
30005 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
30006 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
30007 default: return "invalid";
30008 }
30009 }
30010
30011 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
30012 {
30013 if (!value) return "{}";
30014 std::string result;
30015 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
30016 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30017 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30018 return "{" + result.substr(0, result.size() - 3) + "}";
30019 }
30020
30021 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
30022 {
30023 switch (value)
30024 {
30025 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30026 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30027 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30028 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
30029 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
30030 default: return "invalid";
30031 }
30032 }
30033
30034 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
30035 {
30036 if (!value) return "{}";
30037 std::string result;
30038 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30039 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30040 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30041 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
30042 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
30043 return "{" + result.substr(0, result.size() - 3) + "}";
30044 }
30045
30046 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
30047 {
30048 switch (value)
30049 {
30050 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
30051 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
30052 default: return "invalid";
30053 }
30054 }
30055
30056 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
30057 {
30058 if (!value) return "{}";
30059 std::string result;
30060 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30061 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30062 return "{" + result.substr(0, result.size() - 3) + "}";
30063 }
30064
Mark Young39389872017-01-19 21:10:49 -070030065 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
30066 {
30067 switch (value)
30068 {
30069 case SurfaceCounterFlagBitsEXT::eVblankExt: return "VblankExt";
30070 default: return "invalid";
30071 }
30072 }
30073
30074 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
30075 {
30076 if (!value) return "{}";
30077 std::string result;
30078 if (value & SurfaceCounterFlagBitsEXT::eVblankExt) result += "VblankExt | ";
30079 return "{" + result.substr(0, result.size() - 3) + "}";
30080 }
30081
30082 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
30083 {
30084 switch (value)
30085 {
30086 case DisplayPowerStateEXT::eOff: return "Off";
30087 case DisplayPowerStateEXT::eSuspend: return "Suspend";
30088 case DisplayPowerStateEXT::eOn: return "On";
30089 default: return "invalid";
30090 }
30091 }
30092
30093 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
30094 {
30095 switch (value)
30096 {
30097 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
30098 default: return "invalid";
30099 }
30100 }
30101
30102 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
30103 {
30104 switch (value)
30105 {
30106 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
30107 default: return "invalid";
30108 }
30109 }
30110
Mark Young0f183a82017-02-28 09:58:04 -070030111 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
30112 {
30113 switch (value)
30114 {
30115 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
30116 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
30117 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
30118 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
30119 default: return "invalid";
30120 }
30121 }
30122
30123 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
30124 {
30125 if (!value) return "{}";
30126 std::string result;
30127 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
30128 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
30129 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
30130 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
30131 return "{" + result.substr(0, result.size() - 3) + "}";
30132 }
30133
30134 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
30135 {
30136 switch (value)
30137 {
30138 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
30139 default: return "invalid";
30140 }
30141 }
30142
30143 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
30144 {
30145 if (!value) return "{}";
30146 std::string result;
30147 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
30148 return "{" + result.substr(0, result.size() - 3) + "}";
30149 }
30150
30151 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
30152 {
30153 switch (value)
30154 {
30155 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
30156 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
30157 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
30158 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
30159 default: return "invalid";
30160 }
30161 }
30162
30163 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
30164 {
30165 if (!value) return "{}";
30166 std::string result;
30167 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
30168 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
30169 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
30170 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
30171 return "{" + result.substr(0, result.size() - 3) + "}";
30172 }
30173
30174 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
30175 {
30176 switch (value)
30177 {
30178 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
30179 default: return "invalid";
30180 }
30181 }
30182
30183 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
30184 {
30185 if (!value) return "{}";
30186 std::string result;
30187 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
30188 return "{" + result.substr(0, result.size() - 3) + "}";
30189 }
30190
30191 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
30192 {
30193 switch (value)
30194 {
30195 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
30196 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
30197 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
30198 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
30199 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
30200 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
30201 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
30202 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
30203 default: return "invalid";
30204 }
30205 }
30206
30207 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
30208 {
30209 switch (value)
30210 {
30211 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30212 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30213 default: return "invalid";
30214 }
30215 }
30216
30217 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30218 {
30219 switch (value)
30220 {
30221 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30222 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30223 default: return "invalid";
30224 }
30225 }
30226
30227 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30228 {
30229 if (!value) return "{}";
30230 std::string result;
30231 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30232 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30233 return "{" + result.substr(0, result.size() - 3) + "}";
30234 }
30235
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030236} // namespace vk
30237
30238#endif